Borderlayout gui添加到边界

时间:2011-11-10 20:15:48

标签: java swing user-interface layout-manager border-layout

我正在尝试将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放入另一个Big面板并添加,P1 - West和Big Panel- Center还有其他方法吗?或者我应该尝试不同的布局。

3 个答案:

答案 0 :(得分:3)

这就是BorderLayout的工作方式; NORTHSOUTH组件在WESTCENTEREAST组件的上方和下方水平延伸。

您的系统有两个BorderLayout s完全没问题。您可以使用GridBagLayoutMigLayout实现相同的目标,但我保证您需要花费更长时间才能实施。使用中间面板是一种有效的方法。

答案 1 :(得分:0)

JFrame window = new 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);

答案 2 :(得分:0)

尝试使用MigLayout代替BorderLayout。代码如下所示:

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

http://www.miglayout.com