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.NORTHGridBagConstraints.SOUTHGridBagConstraints.WESTGridBagConstraints.EASTGridBagConstraints.NORTHWESTGridBagConstraints.NORTHEASTGridBagConstraints.SOUTHWESTGridBagConstraints.SOUTHEASTGridBagConstraints.CENTER (デフォルト) |
GridBagConstraints.PAGE_STARTGridBagConstraints.PAGE_ENDGridBagConstraints.LINE_STARTGridBagConstraints.LINE_ENDGridBagConstraints.FIRST_LINE_STARTGridBagConstraints.FIRST_LINE_ENDGridBagConstraints.LAST_LINE_STARTGridBagConstraints.LAST_LINE_END |
GridBagConstraints.BASELINEGridBagConstraints.BASELINE_LEADINGGridBagConstraints.BASELINE_TRAILINGGridBagConstraints.ABOVE_BASELINEGridBagConstraints.ABOVE_BASELINE_LEADINGGridBagConstraints.ABOVE_BASELINE_TRAILINGGridBagConstraints.BELOW_BASELINEGridBagConstraints.BELOW_BASELINE_LEADINGGridBagConstraints.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 のインスタンスです。GridBagConstraintsprotected 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) によって指定されるグリッドの原点とは異なります。ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。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, 2013, Oracle and/or its affiliates. All rights reserved.