2010-12-21 13 views
2

になるように3つのコンポーネントが整列する標準Java Swingで最も簡単な方法は何である:、Swing:[動的] [静的] [動的]コンポーネントの幅を一番簡単に調整できますか?

  • 動的幅Component1Component3等しくなるように調整される

  • Component2(間にある)はの定数の幅ですか?

サイズ変更可能なJPanel(JFrame内部など)があるとします。

小さな幅は、次のようになります。

[----------------whole JPanel----------------] 
[--Component1--] [Component2] [--Component3--] 

ビッグ幅は次のようになります。

[------------------------whole JPanel------------------------] 
[------Component1------] [Component2] [------Component3------] 

注:私は、 "試用-と、エラーが発生した" GroupLayoutで長過ぎる。

答えて

1

1つのオプションは、GridBagLayoutを使用しています。間に合わせのスニペットはあなたが始めるために:

GridBagConstraints gbc; 
final int A_CENTER = GridBagConstraints.CENTER; // anchor: center 
final int F_NONE = GridBagConstraints.NONE; // fill: none 
final int F_DX = GridBagConstraints.HORIZONTAL; // fill: dx only 
final Insets IN_0 = new Insets(0, 0, 0, 0); // empty insets 

setLayout(new GridBagLayout()); 
gbc = new GridBagConstraints(0, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0); 
add(new JButton("test1"), gbc); 
gbc = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, A_CENTER, F_NONE, IN_0, 0, 0); 
add(new JButton("test2"), gbc); 
gbc = new GridBagConstraints(2, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0); 
add(new JButton("test1"), gbc); 

を明らかに、より多くのあなたがグリッドバッグに行うことができ、そして、あなたが見たい正確に何を得るために、いくつかの研磨を行う必要がありますが、これはすべきではありますあなたを始めましょう。

GBCコンストラクタの第5パラメータは、x方向に伸びるための重みです。それらを等しく設定し、中央コンポーネントを伸ばさないようにする(F_NONE)と、汚い作業が行われます。

+0

あなたがするGridBagConstraintsを再利用することができます。P 私は左のアンカー西、右アンカー東と中央の1話の中心になるだろう –

+0

の茄多がありますGridBagsを使用する方法:)最近使用したものを切り取って貼り付けました。 GBCの再利用に関する限り、私はそれがコードを読みにくく感じています。制約の1つを設定するのを忘れてしまったかどうかは分かりません。 –

1

MigLayoutマネージャーはなんですか?これはJREの一部ではありませんが、GridBagより少ないコードで必要なレイアウトを簡単に作成できる素晴らしいレイアウトマネージャです。彼らのdemoをチェックしてください。

は(楽しむ... totally grid bag漫画を投稿する抵抗することができませんでした:

関連する問題