2009-04-15 180 views
1

我在Swing應用程序中使用了一些JTextArea。使用GridBagLayout管理器將包圍的JScrollPane添加到JPanel調整JFrame大小時出現奇怪行爲的JTextArea

// Pseudo Code ---- 

JTextArea area = new JTextArea(); 
area.setRows(3); 

JScrollPane sp = new JScrollPane(area); 

JPanel p = new JPanel(new GridBagLayout()); 
p.add(sp, new GridBagConstraints(
      0, 0, 1, 1, 1, 0, WEST, HORIZONTAL, new Insets(4, 4, 4, 4), 0, 0)); 

// ---------------- 

一切工作正常。沒有問題,直到我調整JFrame的大小。然後兩個JTextArea將摺疊成一行。但是,其中至少有一個地方是足夠的。

爲什麼元素摺疊爲一行?
有誰知道解決方案?有沒有人有想法?

+0

都?我只能在你的代碼中找到一個... – 2009-04-15 13:07:18

回答

0

如果我在我的元素周圍使用了一個BorderLayout,它就可以工作。
Pete,MrWiggles,謝謝你的幫助!

2

我相信這是因爲你的weighty設置爲0(GridBagConstraints構造函數的第6個參數)。如果您希望組件垂直增長,則需要增加此項。

2

此外,請確保您在滾動條上設置'首選尺寸'屬性。當這個屬性沒有設置時,當框架和麪板被調整大小時,我有奇怪的行爲(窗格/字段崩潰/消失)。

0

最近我有一個類似的問題,我有兩個JTextAreas具有不同的GridBagConstraint.weighty值,並且都設置爲GridBagConstraint.fill = BOTH。當我改變JTextAreas中的文本時,他們會改變大小(如果設置了權重和填充值,我預計不會發生這種情況)。奇怪的是,我所要做的只是將一個首選大小設置爲包圍JTexAreas的JScrollPanes。首選大小尺寸可以是任何東西,因爲「fill = BOTH」會導致首選大小被忽略,但它爲解決我的問題做了一件神奇的事情。