6

Swing GroupLayoutを使用していますが、値GroupLayout.DEFAULT_SIZEと。について混乱していますGroupLayout.PREFERRED_SIZE。のような方法でそれらのそれぞれをいつ使用するかはわかりませんGroupLayout.addComponent(Component, int, int, int)

私がこのコードを持っているとしましょう:

GroupLayout l = ...;

l.setHorizontalGroup(l.createSequentialGroup()
    .addComponent(tf1)
    .addComponent(tf2));

l.setVerticalGroup(l.createParallelGroup()
    .addComponent(tf1)
    .addComponent(tf2));

JTextField1本の線上に2つのが配置されていますGroupLayout(水平方向に1つの連続したグループ、垂直方向に1つの平行なグループ)。ここでウィンドウのサイズを変更すると、両方のコンポーネントが使用可能なスペース(それぞれ50%)を取得します。ただし、最初のテキストフィールドのみを水平方向に拡大/縮小し、2番目のテキストフィールドのみを垂直方向に拡大/縮小する必要があります。それを達成するために、 minprefmaxのどの値を使用する必要がありますか?試してみて、どの組み合わせが機能するかを確認できることはわかっていますが、この問題の背後にある理由を知りたいと思います。

4

2 に答える 2

3

いくつかのガイダンスは、GroupLayoutの使用方法:コンポーネントのサイズとサイズ変更にあります。とについてDEFAULT_SIZEPREFERRED_SIZE

メソッドのパラメータとして使用できます

 addComponent(Component comp, int min, int pref, int max)

コンポーネントのサイズを強制的に変更するには(縮小と拡大を許可):

 group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

これにより、コンポーネントのサイズをゼロサイズ(最小)から任意のサイズに変更できます(Short.MAX_VALUE最大サイズは「無限」を意味するため)。コンポーネントがデフォルトの最小サイズを下回らないようにする場合はGroupLayout.DEFAULT_SIZE、2番目のパラメーターで0の代わりに使用します。

コンポーネントを固定サイズにするには(サイズ変更を抑制します):

 group.addComponent(component, GroupLayout.PREFERRED_SIZE,
     GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...

興味深いことに、定数値は負であるため、実際の制約と間違えられることはありません。

于 2010-04-02T01:11:39.807 に答える
1

また、JavaチュートリアルのGroupLayoutセクションと「 Gettingto know GroupLayout、part 1」というタイトルのjava.netの記事を参照した後でも、GroupLayout.DEFAULT_SIZEGroupLayout.PREFERRED_SIZEがどのように使用されているかについて混乱しました。GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max)

JDK1.6.0_27GroupLayout.javasourceに飛び込むComponentSpringクラスで答えを見つけました。それから私はこれらのルールを理解することができました:

最小サイズが必要な場合:

  1. 提供されminた値が負でない場合、その値が返されます。
  2. それ以外の場合はPREFERRED_SIZE、優先サイズのルールに従います。
  3. それ以外の場合は、コンポーネントの最小サイズが返されます。

希望のサイズが必要な場合:

  1. 提供されprefた値が負でない場合、その値が返されます。
  2. それ以外の場合はDEFAULT_SIZE、またはの場合はPREFERRED_SIZE、コンポーネントの推奨サイズを返します。

最大サイズが必要な場合:

  1. 提供されmaxた値が負でない場合、その値が返されます。
  2. それ以外の場合はPREFERRED_SIZE、優先サイズのルールに従います。
  3. それ以外の場合は、コンポーネントの最大サイズが返されます。

trashgodがすでに述べたように、定義は否定的です。DEFAULT_SIZEまたは以外のmin、pref、maxのその他の負の値は、PREFERRED_SIZEエラーとヒットアサートです。

最小サイズ、設定サイズ、最大サイズの相互作用はSequentialGroup.addComponent、チュートリアルからはすぐにはわかりませんでした。これで、なぜ固定されているのか、真ん中の引数がまたはであるのか、NetBeansがworkのように固定サイズの値をどのように生成したのかPREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZEが問題にならないのかがわかりました。DEFAULT_SIZEPREFERRED_SIZEDEFAULT_SIZE,300,Short.MAX_VALUE

于 2012-01-13T22:52:17.477 に答える