2013-10-31 60 views
0

我無法決定在JPanel上使用哪種佈局。我需要JPanel看起來像我試圖在這裏畫的東西。如何手動將組件放置在FlowLayout或GridLayout中?

|-----------------------| 
|  Some JLabel  | 
|      | 
| JLabel |JTextField| | 
| JLabel |JTextField| | 
| JLabel |JTextField| | 
|-----------------------| 

我在想使用FlowLayout,但我不知道如何手動設置組件在下一行。我嘗試了GridLayout,並取得了一些成功,但並不完全符合我的要求。下面是這個JPanel的代碼,如果它有幫助的話,我現在已經有了。

JPanel mainPanel = new JPanel(); 
mainPanel.setLayout(new GridLayout(4, 1)); 
JLabel description = new JLabel("description.."); 

JLabel label1 = new JLabel("label1"); 
JLabel label2 = new JLabel("label2"); 
JLabel label3 = new JLabel("label3");  

JTextField field1 = new JTextField(25); 
JTextField field2 = new JTextField(25); 
JTextField field3 = new JTextField(25); 

mainPanel.add(description); 
mainPanel.add(label1); 
mainPanel.add(field1); 
mainPanel.add(label2); 
mainPanel.add(field2); 
mainPanel.add(label3); 
mainPanel.add(field3); 

謝謝!

回答

2

你可以使用一個GridBagLayout實現這一點,但它可能是eaiser簡單使用BorderLayout,將標題中NORTH位置,並把另一面板上的字段,在CENTER位置使用GridLayout

當然,最終的結果會降低到你想要的。

看一看A Visual Guide to Layout Managers一些更多的想法,不要怕使用複合佈局

+0

謝謝!我使用了面板的北區和主面板的CENTER區域的網格佈局面板。我將不得不做一些調整,但我真的很感謝你的建議! –

3

你永遠被迫只使用一個單一的佈局管理器。您可以使用多個面板,每個面板都有自己的佈局管理器。

但是,在你的情況下,GridBagLayout可能是最簡單的情況。首先閱讀關於How to use GridbagLayout的Swing教程中的部分,瞭解所有約束的工作示例和解釋。

+0

恭喜100k - 不知道我會打電話'GridBagLayout'最簡單,最強大......簡單......;) – MadProgrammer

+0

謝謝,沒有注意到它已經改變:)同意,GridBagLayout一般不是最容易的。我也想用一個GridLayout建議一個BorderLayout,但是你有調整問題的大小。我真的希望在JDK中爲標籤/文本字段對使用更易於使用的佈局。 – camickr

+0

'GridLayout'和'GridBagLayout'的混合體 - GridLayout'使用'GridBagLayout'的填充選項的易用性:P – MadProgrammer

相關問題