我正在尝试使用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);
}
}
答案 0 :(得分:0)
使用dock
功能,顶部将停靠在北部,底部在南部,中间行将在它们之间增长。 http://www.miglayout.com/QuickStart.pdf查看第5页的对接教程。