2009-04-15 2 views
1

SwingアプリケーションでJTextAreaを使用しています。囲まれたJScrollPaneは、GridBagLayoutマネージャを使用して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の両方が1つの行に折りたたまれます。しかし、少なくとも1人は十分な場所があります。

なぜ要素が1つの行に崩壊するのですか?
ソリューションを知っている人はいますか?誰にもアイデアはありますか?

+0

?私はあなたのコードで1つだけを見つけることができます... –

+0

はい。私はちょうどこのポストに例を挙げました。私の実際のコードではありません。それは無関係かもしれないし、私はそれを削除すべきです。 –

答えて

0

私の要素の周りにBorderLayoutを使用すると動作します。
ピート、MrWiggles、ありがとうございます!

2

私はあなたの重みが0(GridBagConstraintsコンストラクタの6番目の引数)に設定されているからです。コンポーネントを垂直に伸ばしたい場合は、これを増やす必要があります。

2

また、スクロールペインの 'preferred size'プロパティを設定していることを確認してください。このプロパティが設定されていないときに、フレームやパネルのサイズが変更されると、私は奇妙な動作(ペイン/フィールド崩壊/消滅)を経験しました。

0

最近私は、GridBagConstraint.weightyの値が異なる2つのJTextAreasがあり、両方ともGridBagConstraint.fill = BOTHに設定されていたのと同様の問題が発生しました。 JTextAreasのテキストを変更すると、サイズが変更されます(ウェイトと塗りつぶしの値が設定されている場合は発生しません)。奇妙なことに、私がしなければならなかったのは、JTexAreasを囲むJScrollPanesに好ましいサイズを設定したことでした。好ましいサイズのディメンションは何でもかまいませんが、 "fill = BOTH"は推奨サイズを無視させてしまいましたが、私の問題を解決するためには何か魔法がかかりました。

関連する問題