制約プロパティ・エディタ

Javaビジュアル・エディタを使用してGridBagLayoutコンテナを作成する場合、コンテナに追加するコンポーネントごとにGridBagConstraints2オブジェクトが自動的にインスタンス化されます。JDeveloperでは、デフォルトの制約値または(XYLayoutのような)別のレイアウトからGridBagLayoutへの変換中に既存のコンポーネントに対して計算された値(あるいはその両方)が使用されます。制約プロパティ・エディタを使用すると、これらの制約を編集できます。

JDeveloperで制約プロパティ・エディタにアクセスするには、次のいずれかを使用します。

プロパティ・エディタの各制約は、次のセクションで指定されるGridBagConstraints2.classの制約に直接対応しています。

グリッド位置
XおよびY

グリッド位置制約X(gridx)およびY(gridy)を使用して、コンポーネントの左上隅のグリッド・セル位置を指定します。この制約値は、列または行のセル番号を表す整数です。GridBagLayoutは、行および列の最大値512をサポートしています。XおよびYに指定する値は、512を超えないようにしてください。たとえば、gridx=0は左端の列、gridy=0は先頭の行になります。したがって、gridx=0およびgridy=0の制約を持つコンポーネントは、グリッドの最初のセル(左上)に配置されます。

gridxおよびgridyに使用できる、RELATIVEと呼ばれる別の制約値(デフォルト値)もあります。RELATIVEは、次のようにコンポーネントを前のコンポーネントと相対的に配置するように指定します。

  • gridxで使用した場合、このコンポーネントを、直前に追加された最後のコンポーネントのすぐ右に配置するように指定します。
  • gridyで使用した場合、このコンポーネントを、直前に追加された最後のコンポーネントのすぐ下に配置するように指定します。

制約プロパティ・エディタでグリッド位置の「X」または「Y」のRELATIVE値を指定するには、-1と入力します。

幅および高さ

グリッド位置制約の幅」(gridwidth)および「高さ」(gridheight)を使用して、コンポーネントが使用する行(gridwidth)または列(gridheight)のセルの数を指定します。この制約値は、ピクセル数ではなく、列または行のセルの数を表す整数です。

gridwidthおよびgridheightに使用できるその他の制約値には、RELATIVEおよび REMAINDERがあります。

RELATIVEは、このコンポーネントが行(gridwidth)または列(gridheight)の最後から2番目のコンポーネントであることを指定します。RELATIVEを使用するコンポーネントは、最後のセルを除く残りのセルをすべて取得します。たとえば、6列の行で、コンポーネントが3列目から始まる場合、RELATIVEのgridwidthは、列3、4および5を使用します。

REMAINDERは、このコンポーネントが行(gridwidth)または列(gridheight)の最後のコンポーネントであることを指定します。

  • 制約プロパティ・エディタでグリッド位置の「幅」または「高さ」のRELATIVE値を指定するには、-1と入力します。
  • 制約プロパティ・エディタでグリッド位置の「幅」または「高さ」のREMAINDER値を指定するには、0と入力します。
外枠までの空間
「外枠までの空間」(insets)を使用して、コンポーネントとその表示領域の端の間の外枠までの空間(パディング)の最小量をピクセル単位で指定します。コンポーネントの上端、左端、下端および右端ごとに個別の値を指定できます。
サイズ・パディング

「サイズ・パディング」は、コンポーネントの内部パディング(セル内のコンポーネントの周囲のスペース)を指定します。「幅」(ipadx)および「高さ」(ipady)を使用して、内部パディングのコンポーネントの最小サイズに追加されるスペースをピクセル単位で指定します。

コンポーネントの幅は、少なくとも最小の幅にipadxを加えた値(ピクセル単位)になります(Javadocコメントではipadx*2になっていますが、実際のコードでは1回のみ加算されます)。同様に、コンポーネントの高さは、少なくとも最小の高さにipadyを加えた値(ピクセル単位)になります。

例:

幅30ピクセル、高さ20ピクセルのコンポーネントに追加する場合は、次のようになります。

「幅」(ipadx)は、コンポーネントの最小の幅に加算されるピクセル数を指定します。
高さ
「高さ」(ipady)は、コンポーネントの最小の高さに加算されるピクセル数を指定します。
スペース配分

「スペース配分」制約を使用して、コンテナのサイズを変更するときに、スペースを垂直方向(weightx)および水平方向(weighty)に配置する方法を指定します。「スペース配分」は、コンテナをデフォルトのサイズから拡大するときに各コンポーネントに割り当てられるスペースを決定します。

たとえば、スペース配分が0.0、0.3および0.2の3つのコンポーネントがある場合、コンテナを拡大すると、スペースは最初のコンポーネントには割り当てられず、3/5が2番目のコンポーネントに割り当てられ、2/5が3番目のコンポーネントに割り当てられます。

注意: すべてのコンポーネントのスペース配分が単一方向でゼロの場合、コンポーネントはそのディメンションのコンテナの中央に集められ、デフォルトのサイズよりも拡大されることはありません。GridBagLayoutは、セルのグリッドとコンテナの端の間にスペースを挿入します。

「スペース配分」の値はdouble型で、0.0から1.0の範囲の数値で指定します。ゼロは、コンポーネントにはスペースを設定できないことを示し、1.0は、コンポーネントがスペースを完全に共有することを示します。

X
「スペース配分」制約X(weightx)は、コンポーネントの垂直方向のスペース配分です。行のスペース配分は、行の全コンポーネントについて最大のweightxになるように計算されます。
Y
「スペース配分」制約Y(weighty)は、コンポーネントの水平方向のスペース配分です。列のスペース配分は、列の全コンポーネントについて最大のweightyになるように計算されます。
アンカー

コンポーネントが表示領域より小さい場合は、anchor制約を使用して、領域内でコンポーネントを配置する場所をレイアウト・マネージャに通知します。anchorは、コンポーネントのfill制約に従って、表示領域内のコンポーネントにのみ影響します。

たとえば、コンポーネントのfill制約値がBOTH(表示領域を水平方向と垂直方向に塗りつぶす)の場合、コンポーネントは使用可能な領域全体を使用するため、anchor制約は無効です。anchor制約を有効にするには、fill制約値をNONEHORIZONTALまたはVERTICALに設定します。

anchorの値は次のとおりです。

NW(左上)

N(上)

NE(右上)

W(左)

C(中央)

E(右)

SW(左下)

S(下)

SE(右下)

最大サイズ化

コンポーネントの表示領域がコンポーネントの要求したサイズよりも大きい場合は、fill制約を使用して、コンポーネントのサイズを変更する必要があるかどうかをレイアウト・マネージャに確認し、必要な場合はその方法を確認します。anchor制約と同様に、fill制約は、表示領域内のコンポーネントにのみ影響します。fillは、コンポーネントを展開して、割り当てられている領域全体を塗りつぶすようにレイアウト・マネージャに通知します。

fillの値は次のとおりです。

None

コンポーネントのサイズは変更しません。

Horizontal

コンポーネントのサイズ変更と領域の塗りつぶしを水平方向にのみ行います。

Vertical

コンポーネントのサイズ変更と領域の塗りつぶしを垂直方向にのみ行います。

Both

コンポーネントのサイズを水平方向と垂直方向の両方で変更し、領域を完全に塗りつぶします。


GridBagLayout