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.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のインスタンスです。 GridBagConstraintsprotected GridBagConstraints defaultConstraints
defaultConstraintsのコピーが割り当てられます。protected GridBagLayoutInfo layoutInfo
layoutInfoがnullの場合は、グリッド・バッグにコンポーネントがないか、またはコンポーネントがあってもそれがまだ検査を受けていないことを意味します。 public int[] columnWidths
nullではない場合、すべての最小列幅が計算されたあとで、その値がグリッド・バッグに適用されます。 columnWidthsに列数より多くの要素がある場合、columnWidthの要素数に合わせるためにグリッド・バッグに列が追加されます。 getLayoutDimensions()public int[] rowHeights
nullではない場合、すべての最小の行の高さが計算されたあとで、その値がグリッド・バッグに適用されます。 rowHeightsに行数より多くの要素がある場合、rowHeightsの要素数に合わせるために、グリッド・バッグに行が追加されます。 getLayoutDimensions()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)によって指定されるグリッドの原点とは異なります。 ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。 ComponentOrientationpublic 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座標ComponentOrientationpublic void addLayoutComponent(String name, Component comp)
addLayoutComponent、インタフェースLayoutManagername - コンポーネントに関連付けられる文字列comp - 追加されるコンポーネントpublic void addLayoutComponent(Component comp, Object constraints)
constraintsオブジェクトを使用して、指定されたコンポーネントをレイアウトに追加します。 制約は可変であり、そのためキャッシュ時に複製されることに注意します。 addLayoutComponent、インタフェースLayoutManager2comp - 追加されるコンポーネントconstraints - コンポーネントをレイアウトに追加する方法を指定するオブジェクトIllegalArgumentException - constraintsがGridBagConstraintではない場合public void removeLayoutComponent(Component comp)
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
removeLayoutComponent、インタフェースLayoutManagercomp - 削除されるコンポーネント。Container.remove(java.awt.Component), Container.removeAll()public Dimension preferredLayoutSize(Container parent)
parentコンテナの優先サイズを判定します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
preferredLayoutSize、インタフェースLayoutManagerparent - レイアウトが行われるコンテナparentコンテナの推奨サイズContainer.getPreferredSize()public Dimension minimumLayoutSize(Container parent)
parentコンテナの最小サイズを判定します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
minimumLayoutSize、インタフェースLayoutManagerparent - レイアウトが行われるコンテナparentコンテナの最小サイズContainer.doLayout()public Dimension maximumLayoutSize(Container target)
maximumLayoutSize、インタフェースLayoutManager2target - 配置する必要があるコンテナContainer, minimumLayoutSize(Container), preferredLayoutSize(Container)public float getLayoutAlignmentX(Container parent)
getLayoutAlignmentX、インタフェースLayoutManager20.5fpublic float getLayoutAlignmentY(Container parent)
getLayoutAlignmentY、インタフェースLayoutManager20.5fpublic void invalidateLayout(Container target)
invalidateLayout、インタフェースLayoutManager2public void layoutContainer(Container parent)
GridBagLayoutオブジェクトの制約を満たすために、指定されたコンテナ内のコンポーネントの形状を変更します。
ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
layoutContainer、インタフェースLayoutManagerparent - レイアウトが行われるコンテナContainer, Container.doLayout()public String toString()
protected GridBagLayoutInfo getLayoutInfo(Container parent, int sizeflag)
GridBagLayoutInfoのインスタンスに値を入力します。 このインスタンスには、子のセットを通じて、次の3つの段階の実行が必要です。
このメソッドは、GridBagLayoutが内部的に使用するだけにしてください。
parent - レイアウト・コンテナsizeflag - PREFERREDSIZEまたはMINSIZEGridBagLayoutInfoprotected GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag)
getLayoutInfoを呼び出すようにしてください。 このメソッドはgetLayoutInfoと同じです。パラメータと戻り値の詳細は、getLayoutInfoを参照してください。 protected void adjustForGravity(GridBagConstraints constraints, Rectangle r)
GridBagLayoutが内部的に使用するだけにしてください。 constraints - 適用される制約r - 調整するRectangleprotected 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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。