2

標準のJava Swingで3つのコンポーネントを次のように配置する最も簡単な方法は何ですか?

  • との動的な幅等しくなるように調整されます。Component1Component3

  • while Component2(間にある) は一定の幅を持っていますか?

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

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

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

大きな幅は次のようになります。

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

GroupLayout注:私はあまりにも長い間「試行錯誤」しました。

4

2 に答える 2

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);

明らかに、GridBag でできることは他にもたくさんあります。見たいものを正確に取得するには、いくつかの仕上げを行う必要がありますが、これで作業を開始できます。

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

于 2010-12-21T00:34:38.207 に答える
1

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

完全にグリッドバッグの漫画を投稿するのを我慢できませんでした...お楽しみください(:

于 2010-12-21T10:23:19.283 に答える