3

我正在尝试将 3 个面板添加到边界布局中,只有南北和西

就像是

[A]

     ___  ______________
    |   ||    P2        |
    |   ||______________|
    |P1 | ______________
    |   ||    P3        |
    |___||______________|

我尝试做类似的事情

JFrame window = new JFrame();
window.setLayout(new BorderLayout());
window.add(P1, BorderLayout.WEST);
window.add(P2, BorderLayout.NORTH);
window.add(P3, BorderLayout.SOUTH);

它最终像

[B]
         ______________
        |    P2        |
        |______________|
         ___
        |P1 |
        |___|
         ______________
        |    P3        |
        |______________|

我是否必须像中心一样添加一个空白来避免这个问题?我尝试将 P2 和 P3 放入另一个大面板并添加,P1 - West 和 Big Panel- Center 有没有其他方法可以解决这个问题?或者我应该尝试不同的布局。

4

3 回答 3

3

这就是有效的方式BorderLayoutNORTH和组件在、和组件SOUTH之上和之下水平延伸。WESTCENTEREAST

您的带有两个BorderLayouts 的系统非常好。GridBagLayout您可以使用or实现相同的目标 MigLayout,但我向您保证,实现它需要更长的时间。使用中间面板是一种有效的做事方式。

于 2011-11-10T20:17:50.837 回答
0

JFrame 窗口 = 新的 JFrame(); window.setLayout(new BorderLayout()); window.add(P1, BorderLayout.SOUTH); window.add(P4, BorderLayout.WEST);

P4.setLayout(new BorderLayout()); P4.add(P2, BorderLayout.NORTH); P4.add(P3, BorderLayout.SOUTH);

于 2011-11-10T20:21:07.583 回答
0

尝试 aMigLayout而不是BorderLayout. 代码如下所示:

setLayout(new MigLayout("wrap 2, fill"));
add(P1, "span 1 2, grow");
add(P2, "grow");
add(P3, "grow");

http://www.miglayout.com

于 2011-11-10T20:25:30.760 回答