2011-11-10 50 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,「碼頭西部」); –