swing - miglayout:无法右对齐工作

标签 swing miglayout

这里有点不对劲。我试图让最右边的按钮(在下面的示例中标记为“帮助”)与 JFrame 右对齐,并将巨大的按钮的宽度与 JFrame 绑定(bind),但每个按钮至少为 180px。我得到了巨大的按钮约束,但不是正确的对齐方式。

alt text

我认为正确的对齐是由 gapbefore push 完成的(如 this other SO question ),但我无法弄清楚。

谁能帮我?

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;

public class RightAlignQuestion {
    public static void main(String[] args) {
        JFrame frame = new JFrame("right align question");
        JPanel mainPanel = new JPanel();
        frame.setContentPane(mainPanel);

        mainPanel.setLayout(new MigLayout("insets 0", "[grow]", ""));

        JPanel topPanel = new JPanel();
        topPanel.setLayout(new MigLayout("", "[][][][]", ""));
        for (int i = 0; i < 3; ++i)
            topPanel.add(new JButton("button"+i), "");
        topPanel.add(new JButton("help"), "gapbefore push, wrap");
        topPanel.add(new JButton("big button"), "span 3, grow");

        JPanel bottomPanel = new JPanel();
        bottomPanel.setLayout(new MigLayout("",
              "[180:180:,grow][180:180:,grow]","100:"));
        bottomPanel.add(new JButton("tweedledee"), "grow");
        bottomPanel.add(new JButton("tweedledum"), "grow");

        mainPanel.add(topPanel, "grow, wrap");
        mainPanel.add(bottomPanel, "grow");
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

最佳答案

没关系,我明白了:看起来在列规范中需要有一个间隙约束,而不是在组件级别:

    topPanel.setLayout(new MigLayout("", "[][][]push[]", ""));

关于swing - miglayout:无法右对齐工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693524/

相关文章:

Java:为什么我的 JButton 被绘制在背景图像后面?

java - JTextArea 占用大量内存

java - 在 Swing 中,布局具有不同高度的组件

java - 当使用 Java 中的 MigLayout 将高度或宽度设置为 100% 时,子级将扩展到其父级的边界

java - 在 Java 中实现自动完成——我做对了吗?

java - 使用 2 个 BufferedImage transient 字段序列化 Obj,第二个图像将不会被读取

Java:JPanel 不拾取键盘绑定(bind)

java - MIG 布局未显示正确的格式

java - 如何更改 jbutton 事件初始化中的变量值?

java - 如何通过MigLayout进行居中对齐