MigLayout - 包含增长和推送的面板

时间:2017-12-28 16:13:29

标签: java swing layout-manager miglayout

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

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