2011-11-10 24 views
3

我想3个面板添加到边界布局仅北南部和西部的borderlayout GUI加入边框

[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 Panel中,并补充说,P1-West和Big Panel-Center还有其他解决方法吗?或者我应该尝试一种不同的布局。

+2

ASCII图片+1 +1 – mKorbel

+0

ASCII画面始终照亮我的一天:) –

回答

3

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

您的系统有两个BorderLayout s是非常好的。您可以使用GridBagLayoutMigLayout实现同样的功能,但我会向您保证实现时间会更长。使用中间面板是一种行之有效的方法。

+0

是啊,可能只是最终使用两个borderlayouts –

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);

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

+0

更容易:添加(P1 );添加(P2,“停靠南”);添加(P3,“码头西部”); –