MigLayout - 面板增长和推动

问题描述 投票:0回答:1

我正在尝试创建一个面板,使用MigLayout,分为三行。第一行和最后一行应具有一定比例的pushY(在这种情况下为2f),并且其间的行应尽可能地增长以占据剩余空间。

但是,在某些情况下,最后一行(例如,它本身就是一个面板)将不包含任何组件。在这种情况下,我希望第二行占据所有高度,我无法实现。

请注意,由于其他流依赖性,不可能使其不可见。

我在这里附上了代码:

public class TestClass {

public static void main(String[] args) {
    createPanel(true);
    createPanel(false);
}

private static void createPanel(boolean removeAll) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0")));

    panel.add(new JLabel("first row"), new CC().grow().newline().pushY(2f));

    JTextArea abc = new JTextArea("abc");
    abc.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
    panel.add(abc, new CC().push().grow().newline());

    JPanel pnl = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0")));
    pnl.add(new JLabel("aaa"), new CC());
    pnl.add(new JLabel("bbb"), new CC().newline());
    pnl.add(new JLabel("ccc"), new CC().newline());
    panel.add(pnl, new CC().grow().newline().pushY(2f));
    if (removeAll) {
        pnl.removeAll();
    }
    frame.setContentPane(panel);
    frame.setSize(100,800);
    frame.setVisible(true);
}

}

enter image description here

java swing layout-manager miglayout
1个回答
0
投票

使用dock功能,所以顶部将停靠在北部,底部在南部,中间行将在它们之间增长。 http://www.miglayout.com/QuickStart.pdf检查第5页的对接教程。

© www.soinside.com 2019 - 2024. All rights reserved.