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

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

「制約」プロパティ・エディタには、次の2つの方法でアクセスできます。

プロパティ・エディタでの制約はそれぞれ、次のセクションで示すようにGridBagConstraints.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という2つの制約値も指定できます。

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)に余白を配分する方法を指定します。「スペース配分」によって、コンテナがデフォルト・サイズから拡大されたときに、各コンポーネントが取得する余白の割合が決まります。

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

注意: すべてのコンポーネントのスペース配分が1つの方向で0(ゼロ)に指定されている場合、その方向については、コンポーネントはコンテナの中央に集まり、指定サイズより大きくなりません。GridBagLayoutでは、セルのグリッドとコンテナの枠との間に余白ができます。

スペース配分の値はdouble型で、0.0から1.0の範囲(0.0と1.0を含む)の数値を指定します。0(ゼロ)は、コンポーネントに余白が割り当てられないことを意味し、1.0はコンポーネントに余白がすべて割り当てられることを意味します。

X
「スペース配分」制約の「X」(weightx)は、コンポーネントの垂直方向のスペース配分を表します。行のスペース配分は、その行の全コンポーネントの最大weightxとなるよう計算されます。
Y
「スペース配分」制約の「Y」(weighty)は、コンポーネントの水平方向のスペース配分を表します。列のスペース配分は、その列の全コンポーネントの最大weightyとなるように計算されます。
配置指定

コンポーネントが表示領域より小さい場合、配置指定(anchor制約)を使用して、レイアウト・マネージャに領域内でのコンポーネントの位置を指示します。配置指定(anchor制約)は、表示領域より小さいコンポーネントにのみ作用し、最大サイズ化(fill制約)の影響を受けます。

たとえば、コンポーネントの最大サイズ化(fill制約値)が両方(BOTH: 表示領域の水平、垂直両方向に最大サイズ化される)の場合、コンポーネントが使用可能な領域全体を占有するため、anchor制約は影響を与えません。 anchor制約を有効にするには、fill制約値をなし(NONE)、水平方向(HORIZONTAL)または垂直方向(VERTICAL)に設定します。

anchorの値は、次のようになります。

NW (NORTHWEST)

N (NORTH)

NE (NORTHEAST)

W (WEST)

C (CENTER)

E (EAST)

SW (SOUTHWEST)

S (SOUTH)

SE (SOUTHEAST)

最大サイズ化

コンポーネントの表示領域がコンポーネントの要求サイズよりも大きい場合、最大サイズ化(fill制約)を使用して、コンポーネントのサイズ変更が必要かどうか、また必要な場合はその方法をレイアウト・マネージャに指示します。 配置指定(anchor制約)と同様、最大サイズ化(fill制約)は表示領域より小さいコンポーネントのみに作用します。最大サイズ化(fill制約)は、コンポーネントが指定領域の最大サイズになるよう、レイアウト・マネージャに指示します。

fillの値は、次のようになります。

None

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

Horizontal

領域の水平方向のみに最大になるよう、コンポーネントのサイズを変更します。

Vertical

領域の垂直方向のみに最大になるよう、コンポーネントのサイズを変更します。

Both

領域の垂直、水平両方向に最大になるよう、コンポーネントのサイズを変更します。


GridBagLayout

 

Copyright © 1997, 2004, Oracle Corporation. All rights reserved.