這是我已經奠定了使用的GridBagLayout:GridBagLayout的調整組件
但是,當我選擇一對夫婦的標籤都應該是填充的文件。這是什麼樣子後,我讓使用這些小的「...」按鈕,文件選擇:
正如你可以看到,整個佈局被搞砸。所有我在做ActionListener的是這樣的:
fileTxt = fileChooser.getSelectedFile();
fileTxtField.setText(fileTxt.getAbsolutePath());
labels = getLabels();
lbl1.setText(labels[0].toUpperCase());
Dimension size = lbl1.getPreferredSize();
lbl1.setMinimumSize(size);
lbl1.setPreferredSize(size);
lbl2.setText(labels[1]);
lbl2.setToolTipText(longLbl);
size = lbl2.getPreferredSize();
lbl2.setMinimumSize(size);
lbl2.setPreferredSize(size);
button1.setPreferredSize(new Dimension(20,25));
button2.setPreferredSize(new Dimension(20,25));
所以,基本上,按鈕將它們的原始大小,並且打亂了整個佈局不理想sizes.and。我該如何解決?所有組件都設置爲不填充gridBagConstraints.fill的gridbagconstraint設置爲GridBagConstraints.NONE - 然而,佈局仍然被搞砸:(
UPDATE
按照你的建議,我刪除了代碼這是調用了setPreferredSize()方法,這是我所得到的:
顯然,這是我想避免的東西 - 一個按鈕,比其文字變大,這是原因設置了setPreferredSize在按鈕上。現在我該怎麼辦?
爲什麼需要重置尺寸。您可以在創建佈局時將其設置爲不可見,並使其在動作偵聽器中可見。此外,網格包似乎沒有正確設置,因爲除標籤之外的組件都會彈出正常網格。您應該爲組件設置網格包常量。它提供了一個更對齊的佈局(網格佈局的目的) – 2012-04-26 08:14:48
1)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 2)最好在構造函數中爲文本字段提供一個大小。 3)一定要在容器上調用'pack()'。 4)佈局有時會尊重組件的首選大小,而其他時間則不然。 5)這看起來很適合['GroupLayout'](http://docs.oracle.com/javase/7/docs/api/javax/swing/GroupLayout.html)。 – 2012-04-26 08:35:35
@NitinChhajer添加了更新 – Jay 2012-04-26 19:20:57