2012-02-13 104 views
2

我有一個JLabel,JButton和JTextField都按照JPanel順序水平排列。 JTextField最初沒有任何文本。 JLabel和JButton分別顯示其自然寬度。但是,JTextField的寬度很小。 (然後在用戶輸入文本時擴展)有JComponent用盡剩餘寬度JPanel

如何讓JTextField使用JLabel和JButton剩餘的所有JPanel的剩餘寬度,並保持該寬度,而不管輸入的文本是什麼?

+3

如果'JTextField(int columns)'不夠用,'BoxLayout'可能會這樣。 – trashgod 2012-02-13 17:54:15

+0

BoxLayout正在解決這個問題,只是現在JTextField與包含它的JPanel一樣高(它不需要那麼高)。 – 2012-02-13 20:16:25

+0

另請參見[*指定組件大小*](http://docs.oracle.com/zh-cn/)。 COM/JavaSE的/教程/ uiswing /佈局/ box.html#大小)。 – trashgod 2012-02-13 21:59:29

回答

2

我從來沒有使用BoxLayout所以它可能會伎倆。但是,當然,GridBagLayout可以做到這一點。

設置的GridBagConstraints到爲gridx = 0,1,2,(分別爲部件1,2和3)gridy = 0(對於所有的)和的weightx = 0的前兩個和最後的weightx = 1.0零件。