2012-03-05 15 views
4

JGoodies FormLayoutを使用してコンポーネントの配置を変更した方法はありますか?例えば実行時にFormLayoutの配置を変更する

CellConstraints cc = new CellCosntraints(); 
panel.add(component,cc.xy(1,1,CellConstraints.DEFAULT,CellConstraints.FILL)); 

私が代わりにFILLのDEFAULTの列制約を持つことがcomponentを変更したい場合は、今では削除せずに設定されていること、それを変更する方法と再がありますコンポーネントを追加しますか?

答えて

5

することができますように見えます:おそらく、その後

FormLayout l = new FormLayout(); 
... 
l.setContraints(component, newconstraints); 

は物事を更新するために容器上にrevalidate()を行います。

+0

ああ、私のw思うように、私はそれが全く新しいセル制約オブジェクトを取るので、それを使用するつもりはありませんでした。私はちょうど現在のものを変更し、そのコンポーネントのためにそれをリセットします。まもなく私はそれを試してみましょう、ありがとう。 –

+0

コードは制約オブジェクトをクローンします。そのため安全です。 [ソース](http://grepcode.com/file/repo1.maven.org/maven2/com.jgoodies/forms/1.2.1/com/jgoodies/forms/layout/FormLayout.java#FormLayout.setConstraints%28java。 awt.Component%2Ccom.jgoodies.forms.layout.CellConstraints%29) – Jim

+0

あなたは本当ですか?私はそれが実際にオブジェクトをクローン化したとは思わなかった。しかし、私はまだ複数のコンポーネントのcellconstraintsオブジェクトを再利用できるので、これはうまくいくと思います。 –

0

は、2つの方法(正しい方向について@Jim +1)

1)容器

revalidate() //covered validate() 
repaint() // required in some cases for JLabel, JTextComponents, JScrollPane ... 

2ためにサイズ変更せずに容器内部で利用可能な寸法を満たす)コンテナのサイズ変更と容器内部で利用可能な寸法を充填あります

pack(); 

this code can help you

+0

真実ですが、それは質問には関係ありません;-) – kleopatra

関連する問題