如何在 MigLayout 的垂直单元格内堆叠组件?

How to stack components inside a vertical cell in the MigLayout?

我想了解 MigLayout,因此我想创建一个 table 内部有不同的面板。

目前它看起来像这样:

单元格 2 包含 3 个标签,它们应该堆叠。因此,我尝试使用 center2.setLayout(new MigLayout("flowy")); 为单元格 2 提供自己的布局,但随后其他组件变得混乱:

那么有没有办法将单元格 2 中的 3 个标签垂直堆叠?

[编辑]: center1 和 center2 应该有相同的高度!

我的例子classPageThree.java:

public class PageThree extends JPanel{

    public PageThree() {
        setLayout(new MigLayout());
        JPanel contentPanel = new JPanel();
        contentPanel.setLayout(new MigLayout("width 100%"));

        JPanel topHeading = new JPanel();
        JPanel westAreas = new JPanel();
        JPanel center1 = new JPanel();
        JPanel center2 = new JPanel();

        // If I give center2 its own layout with flowy, 
        // the 3 labels are stacked vertically, 
        // but the other components get cluttered

        // center2.setLayout(new MigLayout("flowy"));
        JPanel center3 = new JPanel();

        center1.add(new JLabel("center1"));

        center2.add(new JLabel("center21"));
        center2.add(new JLabel("center22"));
        center2.add(new JLabel("center23"));

        center3.add(new JLabel("center3"));
        topHeading.add(new JLabel("topHeading1"));
        topHeading.add(new JLabel("topHeading2"));
        topHeading.add(new JLabel("topHeading3"));
        westAreas.add(new JLabel("westAreas"));

        contentPanel.add(center1, "width 40%");
        contentPanel.add(center2, "width 60%, wrap");
        contentPanel.add(center3, "width 50%");
        contentPanel.add(topHeading, "width 100%, dock north, split 3");
        contentPanel.add(westAreas, "dock west");
    }
}

要回答您的问题,请保留 "flowy" 行并将 "grow" 放入

contentPanel.add(center1, "width 40%");

成为

contentPanel.add(center1, "width 40%, grow");

"grow" 约束告诉组件与单元格中的其他组件相比重量增加。如果它是单元格中唯一的组件,它将填充单元格(这就是我认为你想要的)。要更好地理解它,请在 MigLayout 构造函数中使用 "debug"。这会为您提供单元格周围的边框(红色)和单元格中的组件(蓝色)。

contentPanel.setLayout(new MigLayout("width 100%, debug"));