java - MiGLayout 边框上的多个组件

标签 java swing layout-manager miglayout

我有一个 MigLayout,我想动态添加组件,同时在框架底部保留两个按钮(因为这很直观)。

首先,我想知道我目前正在做的事情是否是最好的方法,其次我想知道如何让我正在努力做的事情真正起作用。

目前,我正在使用 MigLayout 的“网格”来定位动态添加的组件,然后使用 MigLayout 的“边框”来定位固定组件,但我无法让两个按钮都位于南边边界彼此相邻。

根据 Quickstart PDF,这应该是可能的(我引用,“你不局限于每边只使用一个组件”)但它没有继续说明如何你做到了。

最佳答案

就我个人而言,我宁愿将我的 JFrame 拆分为 2 个带有 BorderLayout 的 JPanel。将 MigLayout 表单放在 CENTER 区域的 JPanel 中,将按钮放在 SOUTH 区域的 Box 中。

编辑

再举个例子就更好了;-)

public static void main(String[] args) {

    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());

    // == MigLayout Form ==
    JPanel panelCenter = new JPanel();
    panelCenter.setLayout(
                new MigLayout(
                        new LC().wrapAfter(4),
                        new AC().size(":80:", 0).size("115:115:115", 1, 2, 3).align("right", 0, 2),
                        new AC().size("19:19:19")
                ));
    panelCenter.setOpaque(false);

    panelCenter.add(new JLabel("Label1"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label2"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label3"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label4"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label5"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label6"));
    panelCenter.add(new JTextField(), new CC().growX());

    frame.add(panelCenter, BorderLayout.CENTER);

    // == Buttons ==
    Box southPanel = Box.createHorizontalBox();
    southPanel.add(Box.createHorizontalGlue());
    southPanel.add(new JButton("Ok"));
    southPanel.add(new JButton("Cancel"));
    southPanel.add(Box.createHorizontalGlue());
    frame.add(southPanel, BorderLayout.SOUTH);

    frame.setVisible(true);
    frame.setSize(500, 150);
}

关于java - MiGLayout 边框上的多个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9360448/

相关文章:

java - 为什么我的缓冲图像不显示在我的 JPanel 中?

Java:向 JFrame 添加关键监听器

java - Java中从多个类绘制到主类

Java BoxLayout 使用全宽

java - 如何在 StringTemplate 中默认转义 HTML?

java - 返回 3 个数字的最小值/绝对值

java - JSON 解析不适​​用于 JSONObject

java - 如何根据嵌入的属性进行排序并通过规范限制结果的数量?

java - JoptionPane 有时是空白的

Java GUI - 定位