public class GridBagLayout extends Object implements LayoutManager2, Serializable
GridBagLayout
クラスは、コンポーネントが同じサイズであることを要求することなく、コンポーネントを垂直方向に、水平方向に、またはベースラインに沿って配置する柔軟なレイアウトマネージャーです。 それぞれの GridBagLayout
オブジェクトは、セルによって構成される動的な矩形グリッドを格納しています。各コンポーネントは、1 つ以上のセル (表示領域と呼ぶ) に配置されます。
GridBagLayout
によって管理される各コンポーネントは、GridBagConstraints
のインスタンスと関連します。制約オブジェクトは、コンポーネントの表示領域をグリッド上に配置する場所、およびコンポーネントをその表示領域内に配置する方法を指定します。 また、この制約オブジェクトに加え、GridBagLayout
は、コンポーネントのサイズを決定するために、各コンポーネントの最小サイズおよび推奨サイズを考慮します。
グリッドの全体の方向は、コンテナの ComponentOrientation
プロパティーによって決まります。水平方向に左から右の場合、グリッドの座標 (0, 0) はコンテナの左上隅になります。この場合、X 座標は右方向に、Y 座標は下方向に値が増加します。水平方向に右から左の場合、グリッドの座標 (0, 0) はコンテナの右上隅になります。この場合、X 座標は左方向に、Y 座標は下方向に値が増加します。
グリッドバッグレイアウトを効果的に利用するには、コンポーネントの少なくとも 1 つの GridBagConstraints
オブジェクトをカスタマイズする必要があります。 GridBagConstraints
オブジェクトをカスタマイズするには、1 つまたは複数のインスタンス変数を設定します。
GridBagConstraints.gridx
, GridBagConstraints.gridy
gridx = 0
、gridy = 0
です。水平方向に左から右へのレイアウトの場合、コンポーネントのリーディングコーナーは左上隅です。水平方向に右から左へのレイアウトの場合、コンポーネントのリーディングコーナーは右上隅です。 GridBagConstraints.RELATIVE
(デフォルト値) を使用して、コンポーネントを、このコンポーネントが追加される直前にコンテナに追加されたコンポーネントの直後に (gridx
は x 軸に沿って、gridy
は y 軸に沿って) 配置するよう指定します。
GridBagConstraints.gridwidth
, GridBagConstraints.gridheight
gridwidth
) または 1 列 (gridheight
) あたりのセルの数を指定します。 デフォルト値は 1 です。コンポーネントの表示領域が gridx
から行の最後のセルまで (gridwidth
) または gridy
から列の最後のセルまで (gridheight
) であることを指定する場合は、GridBagConstraints.REMAINDER
を使用します。
コンポーネントの表示領域が gridx
から、行の最後から 2 番目のセルまで (gridwidth
)、または gridy
から、列の最後から 2 番目のセルまで (gridheight
) であることを指定する場合は、GridBagConstraints.RELATIVE
を使用します。
GridBagConstraints.fill
GridBagConstraints.NONE
(デフォルト)、GridBagConstraints.HORIZONTAL
(コンポーネントの高さは変更せずに、幅を表示領域最大にする)、GridBagConstraints.VERTICAL
(コンポーネントの幅は変更せずに、高さを表示領域最大にする)、GridBagConstraints.BOTH
(コンポーネントを表示領域最大にする) です。
GridBagConstraints.ipadx
, GridBagConstraints.ipady
ipadx
ピクセルとなります。 同様に、コンポーネントの高さは、少なくとも最小の高さ + ipady
ピクセルとなります。
GridBagConstraints.insets
GridBagConstraints.anchor
ComponentOrientation
プロパティーを基準にして解釈されますが、絶対値には解釈はありません。ベースライン相対値は、ベースラインを基準にして計算されます。有効な値は次のとおりです。
絶対値 |
方向相対値 |
ベースライン相対値 |
---|---|---|
GridBagConstraints.NORTH GridBagConstraints.SOUTH GridBagConstraints.WEST GridBagConstraints.EAST GridBagConstraints.NORTHWEST GridBagConstraints.NORTHEAST GridBagConstraints.SOUTHWEST GridBagConstraints.SOUTHEAST GridBagConstraints.CENTER (デフォルト) |
GridBagConstraints.PAGE_START GridBagConstraints.PAGE_END GridBagConstraints.LINE_START GridBagConstraints.LINE_END GridBagConstraints.FIRST_LINE_START GridBagConstraints.FIRST_LINE_END GridBagConstraints.LAST_LINE_START GridBagConstraints.LAST_LINE_END |
GridBagConstraints.BASELINE GridBagConstraints.BASELINE_LEADING GridBagConstraints.BASELINE_TRAILING GridBagConstraints.ABOVE_BASELINE GridBagConstraints.ABOVE_BASELINE_LEADING GridBagConstraints.ABOVE_BASELINE_TRAILING GridBagConstraints.BELOW_BASELINE GridBagConstraints.BELOW_BASELINE_LEADING GridBagConstraints.BELOW_BASELINE_TRAILING |
GridBagConstraints.weightx
, GridBagConstraints.weighty
weightx
) または 1 列 (weighty
) につき、少なくとも 1 つのコンポーネントにウェイトを設定しないかぎり、すべてのコンポーネントがコンテナの中央に集まります。 これは、ウェイトが 0 の場合 (デフォルト) には、GridBagLayout
オブジェクトが余分なスペースをすべてセルのグリッドとコンテナの端の間に配置してしまうからです。
各行にはベースラインがある場合があります。行のベースラインは、その行で有効なベースラインを持つコンポーネントによって決定され、コンポーネントはベースラインに沿って配置されます。コンポーネントの anchor 値は、BASELINE
、BASELINE_LEADING
、BASELINE_TRAILING
のいずれかです。行内でいずれのコンポーネントも有効なベースラインを持たない場合、その行にベースラインはありません。
複数の行にまたがるようなコンポーネントは、開始行のベースライン (ベースラインサイズ変更動作が CONSTANT_ASCENT
の場合)、または終了行のベースライン (ベースラインサイズ変更動作が CONSTANT_DESCENT
の場合) に沿って配置されます。 コンポーネントが沿う行は、支配行と呼ばれます。
次の図に、ベースラインのレイアウトを示します。この図では複数行にまたがるコンポーネントが存在します。
CONSTANT_DESCENT
とアンカー BASELINE
が設定されています。 ベースラインサイズ変更動作が CONSTANT_DESCENT
であるため、パネルの支配行は行 1 です。
CENTER_OFFSET
とアンカー BASELINE
が設定されています。
ベースライン相対値のいずれかを使用して配置されたコンポーネントは、絶対値または方向相対値を使用して配置した場合と異なる方法でサイズが変更されます。コンポーネントの変更方法は、支配行のベースラインの変更方法によって指示されます。 同じ支配行を持つ任意のコンポーネントでベースラインサイズ変更動作 CONSTANT_DESCENT
が設定されている場合、ベースラインは表示領域の下端にアンカー設定されます。そうでない場合、ベースラインは表示領域の上端にアンカー設定されます。次の規則によってサイズ変更動作が指示されます。
OTHER
が設定されたサイズ変更可能コンポーネントの場合は、サイズ変更後のサイズのベースラインが表示領域に収まる場合に限り、サイズ変更されます。ベースラインが表示領域内に収まらなくなる場合、コンポーネントはサイズ変更されません。
OTHER
ではないベースラインに配置されたコンポーネントは、display height - baseline + baseline of component
まで高くすることができます。
次に示す図は、グリッドバッグレイアウトによって管理される 10 個のコンポーネント (すべてのボタン) を示します。図 2 は水平方向に左から右へのコンテナを示し、図 3 は水平方向に右から左へのコンテナを示します。
図 2:水平方向に左から右 | 図 3:水平方向に右から左 |
10 個のコンポーネントのそれぞれは、その関連している GridBagConstraints
オブジェクトの fill
フィールドが GridBagConstraints.BOTH
に設定されています。さらにコンポーネントは、デフォルトとは異なる次の制約を持っています。
weightx = 1.0
weightx = 1.0
, gridwidth = GridBagConstraints.REMAINDER
gridwidth = GridBagConstraints.REMAINDER
gridwidth = GridBagConstraints.RELATIVE
gridwidth = GridBagConstraints.REMAINDER
gridheight = 2
, weighty = 1.0
gridwidth = GridBagConstraints.REMAINDER
上記の例を実装したサンプルコードを示します。
import java.awt.*; import java.util.*; import java.applet.Applet; public class GridBagEx1 extends Applet { protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) { Button button = new Button(name); gridbag.setConstraints(button, c); add(button); } public void init() { GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setFont(new Font("SansSerif", Font.PLAIN, 14)); setLayout(gridbag); c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; makebutton("Button1", gridbag, c); makebutton("Button2", gridbag, c); makebutton("Button3", gridbag, c); c.gridwidth = GridBagConstraints.REMAINDER; //end row makebutton("Button4", gridbag, c); c.weightx = 0.0; //reset to the default makebutton("Button5", gridbag, c); //another row c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row makebutton("Button6", gridbag, c); c.gridwidth = GridBagConstraints.REMAINDER; //end row makebutton("Button7", gridbag, c); c.gridwidth = 1; //reset to the default c.gridheight = 2; c.weighty = 1.0; makebutton("Button8", gridbag, c); c.weighty = 0.0; //reset to the default c.gridwidth = GridBagConstraints.REMAINDER; //end row c.gridheight = 1; //reset to the default makebutton("Button9", gridbag, c); makebutton("Button10", gridbag, c); setSize(300, 100); } public static void main(String args[]) { Frame f = new Frame("GridBag Layout Example"); GridBagEx1 ex1 = new GridBagEx1(); ex1.init(); f.add("Center", ex1); f.pack(); f.setSize(f.getPreferredSize()); f.show(); } }
GridBagConstraints
, GridBagLayoutInfo
, ComponentOrientation
, 直列化された形式修飾子と型 | フィールドと説明 |
---|---|
double[] |
columnWeights
このフィールドは、列のウェイトに対するオーバーライドを保持します。
|
int[] |
columnWidths
このフィールドは、列の最小幅に対するオーバーライドを保持します。
|
protected Hashtable<Component,GridBagConstraints> |
comptable
このハッシュテーブルは、コンポーネントとコンポーネントのグリッドバッグ制約との関連性を維持します。
|
protected GridBagConstraints |
defaultConstraints
このフィールドには、デフォルト値を含むグリッドバッグ制約のインスタンスが保持されているため、コンポーネントにグリッドバッグ制約が関連付けられていない場合、そのコンポーネントには
defaultConstraints のコピーが割り当てられます。 |
protected GridBagLayoutInfo |
layoutInfo
このフィールドは、グリッドバッグのレイアウト情報を保持します。
|
protected static int |
MAXGRIDSIZE
このフィールドは、配列を予約するためには使用されなくなり、下位互換性のために維持されています。
|
protected static int |
MINSIZE
グリッドバッグレイアウトによって配置できる最小のグリッドです。
|
protected static int |
PREFERREDSIZE
グリッドバッグレイアウトによって配置できるグリッドの推奨サイズです。
|
int[] |
rowHeights
このフィールドは、行の最小の高さに対するオーバーライドを保持します。
|
double[] |
rowWeights
このフィールドは、行のウェイトに対するオーバーライドを保持します。
|
コンストラクタと説明 |
---|
GridBagLayout()
グリッドバッグレイアウトマネージャーを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
addLayoutComponent(Component comp, Object constraints)
指定された
constraints オブジェクトを使用して、指定されたコンポーネントをレイアウトに追加します。 |
void |
addLayoutComponent(String name, Component comp)
このレイアウトマネージャーはコンポーネントごとの文字列を使用しないため、何もしません。
|
protected void |
adjustForGravity(GridBagConstraints constraints, Rectangle r)
x、y、幅、高さフィールドを、制約幾何学的図形およびパッドに応じて正しい値に調整します。
|
protected void |
AdjustForGravity(GridBagConstraints constraints, Rectangle r)
このメソッドは廃止されており、下位互換性のためにのみ提供されています。新しいコードは、代わりに
adjustForGravity を呼び出すようにしてください。 |
protected void |
arrangeGrid(Container parent)
グリッドを配置します。
|
protected void |
ArrangeGrid(Container parent)
このメソッドは廃止されており、下位互換性のためにのみ提供されています。新しいコードは、代わりに
arrangeGrid を呼び出すようにしてください。 |
GridBagConstraints |
getConstraints(Component comp)
指定されたコンポーネントの制約を返します。
|
float |
getLayoutAlignmentX(Container parent)
x 軸方向の配置を返します。
|
float |
getLayoutAlignmentY(Container parent)
y 軸方向の配置を返します。
|
int[][] |
getLayoutDimensions()
レイアウトグリッドの列の幅と行の高さを指定します。
|
protected GridBagLayoutInfo |
getLayoutInfo(Container parent, int sizeflag)
管理される子の現在のセットに対する
GridBagLayoutInfo のインスタンスに値を入力します。 |
protected GridBagLayoutInfo |
GetLayoutInfo(Container parent, int sizeflag)
このメソッドは廃止されており、下位互換性のためにのみ提供されています。新しいコードは、代わりに
getLayoutInfo を呼び出すようにしてください。 |
Point |
getLayoutOrigin()
ターゲットコンテナのグラフィックス座標空間内で、レイアウト領域の原点を指定します。
|
double[][] |
getLayoutWeights()
レイアウトグリッドの列と行のウェイトを指定します。
|
protected Dimension |
getMinSize(Container parent, GridBagLayoutInfo info)
getLayoutInfo からの情報に基づいて、マスターの最小サイズを計算します。 |
protected Dimension |
GetMinSize(Container parent, GridBagLayoutInfo info)
このメソッドは廃止されており、下位互換性のためにのみ提供されています。新しいコードは、代わりに
getMinSize を呼び出すようにしてください。 |
void |
invalidateLayout(Container target)
レイアウトを無効にします。このとき、レイアウトマネージャーが情報をキャッシュしていればそれを破棄します。
|
void |
layoutContainer(Container parent)
このグリッドバッグレイアウトを使って指定されたコンテナを配置します。
|
Point |
location(int x, int y)
(x, y) によって指定された点がレイアウトグリッド内のどのセルに含まれているかを判定します。 |
protected GridBagConstraints |
lookupConstraints(Component comp)
指定されたコンポーネントの制約を返します。
|
Dimension |
maximumLayoutSize(Container target)
指定されたターゲットコンテナにコンポーネントが与えられた場合の、レイアウトの最大サイズを返します。
|
Dimension |
minimumLayoutSize(Container parent)
このグリッドバッグレイアウトを使用して、
parent コンテナの最小サイズを判定します。 |
Dimension |
preferredLayoutSize(Container parent)
このグリッドバッグレイアウトを使用して、
parent コンテナの優先サイズを判定します。 |
void |
removeLayoutComponent(Component comp)
指定されたコンポーネントをこのレイアウトから削除します。
|
void |
setConstraints(Component comp, GridBagConstraints constraints)
このレイアウトの指定されたコンポーネントに対して制約を設定します。
|
String |
toString()
グリッドバッグレイアウトの値の文字列表現を返します。
|
protected static final int MAXGRIDSIZE
protected static final int MINSIZE
protected static final int PREFERREDSIZE
protected Hashtable<Component,GridBagConstraints> comptable
comptable
内のキーはコンポーネントで、値は GridBagConstraints
のインスタンスです。GridBagConstraints
protected GridBagConstraints defaultConstraints
defaultConstraints
のコピーが割り当てられます。protected GridBagLayoutInfo layoutInfo
layoutInfo
が null
の場合は、グリッドバッグにコンポーネントがないか、またはコンポーネントがあってもそれがまだ検査を受けていないことを意味します。public int[] columnWidths
null
ではない場合、すべての最小列幅が計算されたあとで、その値がグリッドバッグに適用されます。columnWidths に列数より多くの要素がある場合、columnWidth の要素数に合わせるためにグリッドバッグに列が追加されます。public int[] rowHeights
null
ではない場合、すべての最小の行の高さが計算されたあとで、その値がグリッドバッグに適用されます。rowHeights
に行数より多くの要素がある場合、rowHeights
の要素数に合わせるために、グリッドバッグに行が追加されます。public double[] columnWeights
null
ではない場合、すべての列のウェイトが計算されたあとで、その値がグリッドバッグに適用されます。columnWeights[i]
> 列 i のウェイトの場合は、列 i に columnWeights[i]
のウェイトが割り当てられます。columnWeights
に列数より多くの要素がある場合、超過した要素は無視され、列の作成は行われません。public double[] rowWeights
null
ではない場合、すべての行のウェイトが計算されたあとで、その値がグリッドバッグに適用されます。rowWeights[i]
> 行 i のウェイトの場合は、行 i に rowWeights[i]
のウェイトが割り当てられます。rowWeights
に行数より多くの要素がある場合、超過した要素は無視され、行の作成は行われません。public void setConstraints(Component comp, GridBagConstraints constraints)
comp
- 変更されるコンポーネントconstraints
- 適用される制約public GridBagConstraints getConstraints(Component comp)
GridBagConstraints
オブジェクトのコピーが返されます。comp
- 照会されるコンポーネントprotected GridBagConstraints lookupConstraints(Component comp)
GridBagConstraints
オブジェクトです。
comp
が GridBagLayout
にない場合、一連のデフォルトの GridBagConstraints
が返されます。 null
の comp
値は無効で、null
が返されます。
comp
- 照会されるコンポーネントpublic Point getLayoutOrigin()
ComponentOrientation
の値とは関係なく、レイアウト領域の左上隅のピクセル座標を表します。これは、セル座標 (0,0) によって指定されるグリッドの原点とは異なります。ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。ComponentOrientation
public int[][] getLayoutDimensions()
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
public double[][] getLayoutWeights()
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
public Point location(int x, int y)
(x, y)
によって指定された点がレイアウトグリッド内のどのセルに含まれているかを判定します。各セルは列インデックス (0 から列数 - 1) と行インデックス (0 から行数 - 1) で識別されます。
点 (x, y)
がグリッドの外側にある場合、次の規則が適用されます。 x
が左から右方向のコンテナのレイアウトの左にある場合、または右から左方向のコンテナのレイアウトの右にある場合、列インデックスはゼロが返されます。 x
が左から右方向のコンテナのレイアウトの右にある場合、または右から左方向のコンテナのレイアウトの左にある場合、列インデックスは列数が返されます。 y
がレイアウトの上にある場合は、行インデックスはゼロが返され、y
がレイアウトの下にある場合は、行数が返されます。 コンテナの方向は、その ComponentOrientation
プロパティーによって指定されます。
x
- 点の x 座標y
- 点の y 座標ComponentOrientation
public void addLayoutComponent(String name, Component comp)
addLayoutComponent
、インタフェース: LayoutManager
name
- コンポーネントに関連付けられる文字列comp
- 追加されるコンポーネントpublic void addLayoutComponent(Component comp, Object constraints)
constraints
オブジェクトを使用して、指定されたコンポーネントをレイアウトに追加します。制約は可変であり、そのためキャッシュ時に複製されることに注意します。addLayoutComponent
、インタフェース: LayoutManager2
comp
- 追加されるコンポーネントconstraints
- コンポーネントをレイアウトに追加する方法を指定するオブジェクトIllegalArgumentException
- constraints
が GridBagConstraint
ではない場合public void removeLayoutComponent(Component comp)
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
removeLayoutComponent
、インタフェース: LayoutManager
comp
- 削除されるコンポーネント。Container.remove(java.awt.Component)
, Container.removeAll()
public Dimension preferredLayoutSize(Container parent)
parent
コンテナの優先サイズを判定します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
preferredLayoutSize
、インタフェース: LayoutManager
parent
- レイアウトが行われるコンテナparent
コンテナの推奨サイズContainer.getPreferredSize()
public Dimension minimumLayoutSize(Container parent)
parent
コンテナの最小サイズを判定します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
minimumLayoutSize
、インタフェース: LayoutManager
parent
- レイアウトが行われるコンテナparent
コンテナの最小サイズContainer.doLayout()
public Dimension maximumLayoutSize(Container target)
maximumLayoutSize
、インタフェース: LayoutManager2
target
- 配置する必要があるコンテナContainer
, minimumLayoutSize(Container)
, preferredLayoutSize(Container)
public float getLayoutAlignmentX(Container parent)
getLayoutAlignmentX
、インタフェース: LayoutManager2
0.5f
public float getLayoutAlignmentY(Container parent)
getLayoutAlignmentY
、インタフェース: LayoutManager2
0.5f
public void invalidateLayout(Container target)
invalidateLayout
、インタフェース: LayoutManager2
public void layoutContainer(Container parent)
GridBagLayout
オブジェクトの制約を満たすために、指定されたコンテナ内のコンポーネントの形状を変更します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
layoutContainer
、インタフェース: LayoutManager
parent
- レイアウトが行われるコンテナContainer
, Container.doLayout()
public String toString()
protected GridBagLayoutInfo getLayoutInfo(Container parent, int sizeflag)
GridBagLayoutInfo
のインスタンスに値を入力します。このインスタンスには、子のセットを通じて、次の 3 つの段階の実行が必要です。
このメソッドは、GridBagLayout
が内部的に使用するだけにしてください。
parent
- レイアウトコンテナsizeflag
- PREFERREDSIZE
または MINSIZE
GridBagLayoutInfo
protected GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag)
getLayoutInfo
を呼び出すようにしてください。このメソッドは getLayoutInfo
と同じです。パラメータと戻り値の詳細は、getLayoutInfo
を参照してください。protected void adjustForGravity(GridBagConstraints constraints, Rectangle r)
GridBagLayout
が内部的に使用するだけにしてください。constraints
- 適用される制約r
- 調整する Rectangle
protected void AdjustForGravity(GridBagConstraints constraints, Rectangle r)
adjustForGravity
を呼び出すようにしてください。 このメソッドは adjustForGravity
と同じです。パラメータの詳細は adjustForGravity
を参照してください。protected Dimension getMinSize(Container parent, GridBagLayoutInfo info)
getLayoutInfo
からの情報に基づいて、マスターの最小サイズを計算します。このメソッドは、GridBagLayout
が内部的に使用するだけにしてください。parent
- レイアウトコンテナinfo
- この親のレイアウト情報Dimension
オブジェクトprotected Dimension GetMinSize(Container parent, GridBagLayoutInfo info)
getMinSize
を呼び出すようにしてください。このメソッドは getMinSize
と同じです。パラメータと戻り値の詳細は、getMinSize
を参照してください。protected void arrangeGrid(Container parent)
GridBagLayout
が内部的に使用するだけにしてください。parent
- レイアウトコンテナprotected void ArrangeGrid(Container parent)
arrangeGrid
を呼び出すようにしてください。 このメソッドは arrangeGrid
と同じです。パラメータの詳細は arrangeGrid
を参照してください。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.