【问题标题】:Java -> MigLayout how to set gap'sJava -> MigLayout 如何设置间隙
【发布时间】:2012-01-30 06:35:32
【问题描述】:

我有一个小问题,我使用 MigLayout 开始了一个新的 GUI 项目,我喜欢这种布局,但我无法弄清楚的一件事是如何消除组件本身、组件和框架之间的所有间隙以及单元格和行之间的间隙

现在 MigLayout 文档描述了使用“gap 0px 0px”,其中 gap [gapx] [gapy] 我确实在两个轴上都将间隙设置为 0px,但间隙仍然存在,有人可以在这里帮忙,他们的论坛是个鬼城:)

我想消除 JPanels 和 JFrame 之间的间隙。红色框和框架边框,以及 我想删除红色 JPanel 内的填充。我的代码如下:

package pe.view;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import net.miginfocom.swing.MigLayout;

public class UI_View extends JFrame
{
    //Content panels
    private JPanel  left   = new JPanel(new MigLayout());
    private JPanel  center = new JPanel(new MigLayout());
    private JPanel  right  = new JPanel(new MigLayout());

    //Content components
    private DefaultListModel list_content = new DefaultListModel();
    private JList   list   = new JList(list_content);

    public UI_View()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setMinimumSize(new Dimension(800, 600));
        this.setTitle("PropriarityEnvoirment");
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setLayout(new MigLayout("gap 0px 0px"));

        String data[] = {"Hi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi","Hello","WiWi"};
        for(int i = 0; i < data.length; i++)
        {
            list_content.addElement(data[i]);
        }

        left.add(list);

        left.setBackground(Color.red);
        center.setBackground(Color.green);
        right.setBackground(Color.blue);

        this.add(left, "growy, pushy");
        this.add(center, "grow, pushx");
        this.add(right, "grow, pushy");
    }
}

【问题讨论】:

    标签: java swing user-interface miglayout


    【解决方案1】:

    要在 miglayout 中删除容器之间的空间,您可以使用Docking,它类似于 BorderLayout。

    停靠后,您的代码将如下所示:

    ...
    this.setLayout(new MigLayout());
    ...
    left.add(list, "dock north");
    ...
    this.add(left, "dock west");
    this.add(center, "dock center");
    this.add(right, "dock east");
    ...
    

    我希望这会有所帮助。

    【讨论】:

    • 关于该部分的一个后续问题:“left.add(list, "dock north")" 我曾经将它设置为 "left.add(list, "wrap, push" )" 并且将 JList 组件绑定到边界,这意味着 JList 被 JFrame 重新调整大小。我试过“left.add(list,”wrap,push,dock north“)”,但它只是把它缩小到300px的高度,但保持适当的宽度
    • 我不是 100% 确定您希望 jlist 如何表现,但是否有可能删除 this.setMinimumSize(new Dimension(800, 600));解决了你的问题?
    • 嗯,我将如何更改左侧和列表之间的间隙。并不是说我会将列表停靠在左侧的 JPanel 上,而是将填充减少到 3-5px
    • 我试过了,但什么也没得到。也许您会通过查看快速入门指南 (miglayout.com/QuickStart.pdf) 找到答案,或者从他们的同一计划 (migcalendar.com/miglayout/swtdemoapp.jnlp) 中寻找能让您走上正轨的东西。
    【解决方案2】:

    使用类似的东西

    new MigLayout("", "0[]0[]0[]0", "[]"); 
    this.add(left, "gapx 0 0"); 
    this.add(center, "gapx 0 0");
    

    【讨论】:

      【解决方案3】:

      我今天也找到了,在布局约束中设置插图就解决了。

      panel.setLayout(new MigLayout("insets 0 0 0 0, fill, debug", "", ""));
      

      如果我们不将其设置为0,则会设置默认大小并且很大,就像您在项目中看到的一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 2011-11-30
        • 2012-10-19
        • 2016-08-16
        • 2011-08-25
        • 2019-10-07
        • 1970-01-01
        相关资源
        最近更新 更多