2013-05-30 41 views
0

所以我有一些像這樣的代碼中init()了一個小程序:添加面板BorderLayout的區域,元素不換,他們應該

layout = new BorderLayout(); 
setLayout(layout); 

northPanel = new JPanel(new FlowLayout()); 

northPanel.add(inputDropDown); 
northPanel.add(lowBoundLabel); 
northPanel.add(lowBoundField); 
northPanel.add(highBoundLabel); 
northPanel.add(highBoundField); 
northPanel.add(new JLabel("using")); 
northPanel.add(categoriesField); 
northPanel.add(new JLabel("categories")); 
northPanel.add(showTotalsBox); 
northPanel.add(refreshButton); 

add(northPanel, BorderLayout.NORTH); 

現在,當我測試了一下,所有的元素都在一條直線上並且在沒有足夠的空間時不要環繞。我甚至確定要指定面板是FlowLayout(即使它是默認設置),但它沒有改變任何東西。

他們不應該包裹而不是剛剛離開屏幕?這是怎麼回事?我想出了一個臨時解決方案,將northPanel更改爲BorderLayout,將這些元素拆分成單獨的面板並將它們添加到NorthSouth。然而,這些元素在屏幕上消失而沒有必要的空間,所以我寧願讓它們環繞。

回答

2

這實際上是究竟如何FlowLayout作品,可氣的是不是... ...

看看WrapLayout,而不是...

+0

「的的FlowLayout類使組件在一排,在他們的首選尺寸如果容器中的水平空間太小而無法將所有組件放在一行中,則FlowLayout類將使用多行。「從Oracle直接取得文檔-_- 他們基本上和我在這裏的代碼做同樣的事情,並且它在我測試時應該是這樣: [link](http://docs.oracle.com /javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/FlowLayoutDemoProject/src/layout/FlowLayoutDemo.java) – Watabou

+0

那麼爲什麼它不工作你有問題嗎? – MadProgrammer

+0

我不確定這就是爲什麼我在這裏問大聲笑。當我測試它時,我的代碼不會換行,但是當我測試它的代碼時它不會。我不確定有什麼不同。我可以看看WrapLayout。 – Watabou

相關問題