java - 咄咄逼人和西类牙人搞乱了布局

标签 java miglayout

为什么垂直跨越两行的Label会超出单元格边框?

可编译代码:

public class MigLayoutTests {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        JPanel mainPanel = new JPanel(new MigLayout("wrap 2, debug, fill", "", ""));

        JPanel greyPanel = new JPanel();
        greyPanel.setBackground(Color.GRAY);

        mainPanel.add(new JLabel("<html>text<br>over<br>two<br>rows</html>"), "spany 2");
        mainPanel.add(new JLabel("First row"), "");
        mainPanel.add(new JLabel("Second row"), "");
        mainPanel.add(greyPanel, "spanx 2, pushy, grow");


        frame.setContentPane(mainPanel);
        frame.setVisible(true);

    }

}
<小时/>

这是一张图片:

Label exceeds its borders

<小时/>

我知道我可以使用行约束并将前两行设置为不增长,第三行设置为增长。遵循交换的代码行可以工作并执行我想要的操作,但是我不知道会有多少行,因为它们是动态创建的。

JPanel mainPanel = new JPanel(new MigLayout("wrap 2, debug, fill", "", "[][][fill, grow]"));
(...)
mainPanel.add(greyPanel, "spanx 2, grow");

此外,如果我不让第一个标签跨越两行,那么咄咄逼人的作品。
spanx/pushx 的类似问题。

最佳答案

看来这一定是 MigLayout 对单元格大小的处理存在错误。您可以做的一件事是将标签放在单独的面板中:

JPanel mainPanel = new JPanel(new MigLayout("debug"));

JPanel greyPanel = new JPanel();
greyPanel.setBackground(Color.GRAY);
JPanel labelPanel = new JPanel(new MigLayout("ins 0, debug"));
labelPanel.add(new JLabel("<html>text<br>over<br>two<br>rows</html>"),
                          "pushx, spany");
labelPanel.add(new JLabel("First row"), "pushx, span");
labelPanel.add(new JLabel("Second row"), "pushx, span");
mainPanel.add(labelPanel, "pushx, growx, span");
mainPanel.add(greyPanel, "span, push, grow");

这看起来与带有行约束的解决方案相同,并且应该可以通过添加更多面板来添加额外的组件行。

关于java - 咄咄逼人和西类牙人搞乱了布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23945180/

相关文章:

java - Statement.getGenerateKeys() 的可靠性

java - 无法即时将 JPanel 添加到 JFrame

java - MiGLayout 大小调整在 JavaFX 中无法正常工作

java - 无法从 MigLayout 底部删除多余的行

java - 防止 JLabel 在 setText() 处调整大小

java - 如何从存在的多个整数中提取一个整数值

java - 如何在 Vaadin 的文本字段上创建实时 validator ?

java - 优于 O(n²) 复杂度的列表中列表的查找算法

java - 从 jar 导入 java 库类时,这是否被视为静态链接?还是动态的?

java - MigLayout 中的 Span/Grow 错误?