Java プラットフォーム 1.2

java.awt
クラス GridBagLayout

java.lang.Object
  |
  +--java.awt.GridBagLayout

public class GridBagLayout
extends Object
implements LayoutManager2, Serializable

GridBagLayout クラスは、異なる大きさのコンポーネントでも縦横に配置させられる柔軟なレイアウトマネージャです。各 GridBagLayout オブジェクトは、セルによって構成される動的な矩形グリッドを格納しています。各コンポーネントは、1 つまたは複数のセル (表示領域と呼ぶ) を占有します。

ある 1 つのグリッドバッグレイアウトによって管理される各コンポーネントは、表示領域内でのコンポーネントの配置方法を定める GridBagConstraints のインスタンスに関連付けられます。

GridBagLayout オブジェクトによるコンポーネントの配置方法は、各コンポーネントに関連付けられている GridBagConstraints オブジェクトと、コンポーネントのコンテナの最小サイズと推奨サイズによって決定されます。

グリッドバッグレイアウトを効果的に利用するには、コンポーネントの少なくとも 1 つの GridBagConstraints オブジェクトをカスタマイズする必要があります。GridBagConstraints オブジェクトをカスタマイズするには、1 つまたは複数のインスタンス変数を設定します。

GridBagConstraints.gridx, GridBagConstraints.gridy
コンポーネントの表示領域の左上にあたるセルを指定します。左上隅にあるセルは、gridx = 0,gridy = 0 のアドレスを持ちます。 そのコンポーネントの直前にコンテナに追加されたコンポーネントのすぐ右 (gridx) またはすぐ下 (gridy) に配置する場合は、GridBagConstraints.RELATIVE (既定値) を設定します。
GridBagConstraints.gridwidth, GridBagConstraints.gridheight
コンポーネントの表示領域における 1 行 (gridwidth) または 1 列 (gridheight) あたりのセルの数を指定します。既定値は 1 です。コンポーネントが行 (gridwidth) または列 (gridheight) の最後であることを指定する場合は、GridBagConstraints.REMAINDER を設定します。次のコンポーネントで、行 (gridwidth) または列 (gridheight) が終了することを指定する場合は、GridBagConstraints.RELATIVE を設定します。
GridBagConstraints.fill
コンポーネントの表示領域が必要とするサイズよりも大きい場合には、コンポーネントのサイズ変更の方法を指定します。指定できる値は、GridBagConstraints.NONE (デフォルト)、GridBagConstraints.HORIZONTAL (コンポーネントの高さは変更せずに、幅を表示領域いっぱいにする)、GridBagConstraints.VERTICAL (コンポーネントの幅は変更せずに、高さを表示領域いっぱいにする)、GridBagConstraints.BOTH (コンポーネントを表示領域いっぱいにする) です。
GridBagConstraints.ipadx, GridBagConstraints.ipady
レイアウト内のコンポーネントの内側のパディング (コンポーネントの最小サイズに追加する値) を指定します。コンポーネントの幅は、少なくとも最小の幅 + (ipadx * 2) ピクセルとなります (コンポーネントの両側にパディングされるため)。同様に、コンポーネントの高さは、少なくとも最小の高さ + (ipady * 2) ピクセルとなります。
GridBagConstraints.insets
コンポーネントの外側のパディング、つまりコンポーネントと表示領域の端との間の最小の空間を指定します。
GridBagConstraints.anchor
コンポーネントが表示領域よりも小さい場合に、(表示領域内の) どこにコンポーネントを配置するのかを指定します。指定できる値は、GridBagConstraints.CENTER (デフォルト)、GridBagConstraints.NORTHGridBagConstraints.NORTHEASTGridBagConstraints.EASTGridBagConstraints.SOUTHEASTGridBagConstraints.SOUTHGridBagConstraints.SOUTHWESTGridBagConstraints.WESTGridBagConstraints.NORTHWEST です。
GridBagConstraints.weightx, GridBagConstraints.weighty
スペースの分配方法を指定します。これは、サイズ変更の動作を指定するために重要です。1 行 (weightx) または 1 列 (weighty) につき少なくとも 1 つのコンポーネントに重み付け (ウェイト) を設定しないかぎり、すべてのコンポーネントがコンテナの中央に集まってしまうことになります。これは、重み (ウェイト) が 0 の場合 (デフォルト) には、GridBagLayout オブジェクトが空きスペースをすべてセルのグリッドとコンテナの端の間に配置してしまうからです。

以下の図は、グリッドバッグレイアウトによって管理される 10 個のコンポーネント (すべてボタン) を示します。

すべてのコンポーネントはそれぞれ、その関連付けられている GridBagConstraints オブジェクトの fill フィールドが GridBagConstraints.BOTH に設定されています。さらにコンポーネントは、デフォルトとは異なる以下の制約を持っています。

上記の例を実装したサンプルコードを示す。


 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("Helvetica", 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();
     }
 }
 

導入されたバージョン:
JDK1.0
関連項目:
GridBagConstraints, 直列化された形式

フィールドの概要
 double[] columnWeights
          列のウェイトに対するオーバーライドを保持します。
 int[] columnWidths
          列の最小幅に対するオーバーライドを保持します。
protected  Hashtable comptable
          このハッシュテーブルは、コンポーネントとそのコンポーネントのグリッドバッグ制約との関連付けを維持します。
protected  GridBagConstraints defaultConstraints
          既定値を格納するグリッドバッグ制約のインスタンスを保持します。
protected  java.awt.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)
          指定された制約オブジェクトを使って、指定されたコンポーネントをレイアウトに追加します。
 void addLayoutComponent(String name, Component comp)
          指定された名前を持つ指定のコンポーネントをレイアウトに追加します。
protected  void AdjustForGravity(GridBagConstraints constraints, Rectangle r)
           
protected  void ArrangeGrid(Container parent)
           
 GridBagConstraints getConstraints(Component comp)
          指定されたコンポーネントの制約を取得します。
 float getLayoutAlignmentX(Container parent)
          x 軸の配置を返します。
 float getLayoutAlignmentY(Container parent)
          y 軸の配置を返します。
 int[][] getLayoutDimensions()
          レイアウトグリッドの列の幅と行の高さを指定します。
protected  java.awt.GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag)
          レイアウト制約を出力します。
 Point getLayoutOrigin()
          レイアウトグリッドの原点を指定します。
 double[][] getLayoutWeights()
          レイアウトグリッドの列と行のウェイトを指定します。
protected  Dimension GetMinSize(Container parent, java.awt.GridBagLayoutInfo info)
           
 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()
          グリッドバッグレイアウトの値の文字列表現を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

MAXGRIDSIZE

protected static final int MAXGRIDSIZE
グリッドバッグレイアウトによって配置できるグリッド (縦横どちらとも) の最大数です。

MINSIZE

protected static final int MINSIZE
グリッドバッグレイアウトによって配置できる最小のグリッドです。

PREFERREDSIZE

protected static final int PREFERREDSIZE

comptable

protected Hashtable comptable
このハッシュテーブルは、コンポーネントとそのコンポーネントのグリッドバッグ制約との関連付けを維持します。comptable のキーはコンポーネントで、値は GridBagConstraints のインスタンスです。
関連項目:
GridBagConstraints

defaultConstraints

protected GridBagConstraints defaultConstraints
既定値を格納するグリッドバッグ制約のインスタンスを保持します。そのため、コンポーネントにグリッドバッグ制約が関連付けられていない場合、そのコンポーネントには defaultConstraints のコピーが割り当てられます。
関連項目:
getConstraints(), setConstraints(), lookupConstraints()

layoutInfo

protected java.awt.GridBagLayoutInfo layoutInfo
グリッドバッグのレイアウト情報を保持します。このフィールドの情報は、グリッドバッグの最新の検査に基づきます。layoutInfonull の場合は、グリッドバッグにコンポーネントがないか、またはコンポーネントがあってもそれがまだ検査を受けていないことを意味します。
関連項目:
GetLayoutInfo()

columnWidths

public int[] columnWidths
列の最小幅に対するオーバーライドを保持します。このフィールドが null ではない場合、すべての最小列幅が計算されたあとにその値がグリッドバッグに適用されます。columnWidths に列数より多くの要素がある場合、columnWidth の要素数に合わせるためにグリッドバッグに列が追加されます。
関連項目:
getLayoutDimensions()

rowHeights

public int[] rowHeights
行の最小の高さに対するオーバーライドを保持します。このフィールドが null ではない場合、すべての最小の行の高さが計算されたあとにその値がグリッドバッグに適用されます。rowHeights に行数より多くの要素がある場合、rowHeights の要素数に合わせるためにグリッドバッグに行が追加されます。
関連項目:
getLayoutDimensions()

columnWeights

public double[] columnWeights
列のウェイトに対するオーバーライドを保持します。このフィールドが null ではない場合、すべての列のウェイトが計算されたあとにその値がグリッドバッグに適用されます。columnWeights[i] が列 i のウェイトより大きい場合、列 i に columnWeights[i] のウェイトが割り当てられます。columnWeights に列数より多くの要素がある場合、超過要素は無視され、列の作成は行われません。

rowWeights

public double[] rowWeights
行のウェイトに対するオーバーライドを保持します。このフィールドが null ではない場合、すべての行のウェイトが計算されたあとにその値がグリッドバッグに適用されます。rowWeights[i] が行 i のウェイトより大きい場合、行 i に rowWeights[i] のウェイトが割り当てられます。rowWeights に行数より多くの要素がある場合、超過要素は無視され、行の作成は行われません。
コンストラクタの詳細

GridBagLayout

public GridBagLayout()
グリッドバッグレイアウトマネージャを作成します。
メソッドの詳細

setConstraints

public void setConstraints(Component comp,
                           GridBagConstraints constraints)
このレイアウトの指定されたコンポーネントに対して制約を設定します。
パラメータ:
comp - 変更されるコンポーネント
constraints - 適用される制約

getConstraints

public GridBagConstraints getConstraints(Component comp)
指定されたコンポーネントの制約を取得します。実際の GridBagConstraints オブジェクトのコピーが返されます。
パラメータ:
comp - 照会されるコンポーネント
戻り値:
このグリッドバッグレイアウトで指定されたコンポーネントの制約、つまり実際の制約オブジェクトのコピーが返される

lookupConstraints

protected GridBagConstraints lookupConstraints(Component comp)
指定されたコンポーネントの制約を取得します。戻り値はコピーではなく、配置機構で使用される実際の GridBagConstraints オブジェクトです。
パラメータ:
comp - 照会されるコンポーネント
戻り値:
指定されたコンポーネントの制約

getLayoutOrigin

public Point getLayoutOrigin()
レイアウトグリッドの原点を指定します。ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。
戻り値:
レイアウトグリッドの左上隅にあるセルの原点
導入されたバージョン:
JDK1.1

getLayoutDimensions

public int[][] getLayoutDimensions()
レイアウトグリッドの列の幅と行の高さを指定します。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

戻り値:
レイアウト列の幅とレイアウト行の高さを格納している、2 つの配列から構成される配列
導入されたバージョン:
JDK1.1

getLayoutWeights

public double[][] getLayoutWeights()
レイアウトグリッドの列と行のウェイトを指定します。ウェイトを使うと、レイアウトに余分な空きスペースがある場合に、指定された列または行をその推奨サイズよりどれだけ拡大できるかを計算できます。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

戻り値:
レイアウト列の水平のウェイトとレイアウト行の垂直のウェイトを表現している、2 つの配列から構成される配列
導入されたバージョン:
JDK1.1

location

public Point location(int x,
                      int y)
レイアウトグリッドのどのセルが (x, y) で指定される座標を格納するかを判定します。各セルは列インデックス (0 〜 列数 - 1) と行インデックス (0 〜 行数 - 1) で識別されます。

(x, y) がグリッドの外にある場合は、次の規則が適用されます。列インデックスは x がレイアウトの左側にある場合はゼロとして、右側にある場合は列数として返されます。行インデックスは y がレイアウトの上にある場合はゼロとして、下にある場合は行数として返されます。

パラメータ:
x - 点の x 座標
y - 点の y 座標
戻り値:
レイアウトグリッドのどのセルが点 (xy) を格納しているかを示す順序付きペアのインデックス
導入されたバージョン:
JDK1.1

addLayoutComponent

public void addLayoutComponent(String name,
                               Component comp)
指定された名前を持つ指定のコンポーネントをレイアウトに追加します。
パラメータ:
name - コンポーネントの名前
comp - 追加されるコンポーネント

addLayoutComponent

public void addLayoutComponent(Component comp,
                               Object constraints)
指定された制約オブジェクトを使って、指定されたコンポーネントをレイアウトに追加します。
定義:
インタフェース LayoutManager2 内の addLayoutComponent
パラメータ:
comp - 追加されるコンポーネント
constraints - コンポーネントをレイアウトに追加する方法を指定するオブジェクト

removeLayoutComponent

public void removeLayoutComponent(Component comp)
指定されたコンポーネントをこのレイアウトから削除します。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

パラメータ:
comp - 削除されるコンポーネント
関連項目:
Container.remove(java.awt.Component), Container.removeAll()

preferredLayoutSize

public Dimension preferredLayoutSize(Container parent)
このグリッドバッグレイアウトを使って、parent コンテナの推奨サイズを指定します。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

パラメータ:
parent - 配置が行われるコンテナ
関連項目:
Container.getPreferredSize()

minimumLayoutSize

public Dimension minimumLayoutSize(Container parent)
このグリッドバッグレイアウトを使って、parent コンテナの最小サイズを指定します。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

パラメータ:
parent - 配置が行われるコンテナ
関連項目:
Container.doLayout()

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
指定されたターゲットコンテナの与えられたコンポーネントに対するレイアウトの最大サイズを返します。
定義:
インタフェース LayoutManager2 内の maximumLayoutSize
パラメータ:
target - 配置される必要があるコンポーネント
関連項目:
Container, minimumLayoutSize(java.awt.Container), preferredLayoutSize(java.awt.Container)

getLayoutAlignmentX

public float getLayoutAlignmentX(Container parent)
x 軸の配置を返します。これは、コンポーネントをほかのコンポーネントに対して相対的に配置する方法を指定します。値は 0 と 1 の間の数値でなければならず、0 は原点への配置、1 は原点からもっとも離れた場所への配置、0.5 は中間位置への配置を表現します。
定義:
インタフェース LayoutManager2 内の getLayoutAlignmentX

getLayoutAlignmentY

public float getLayoutAlignmentY(Container parent)
y 軸の配置を返します。これは、コンポーネントをほかのコンポーネントに対して相対的に配置する方法を指定します。値は 0 と 1 の間の数値でなければならず、0 は原点への配置、1 は原点からもっとも離れた場所への配置、0.5 は中間位置への配置を表現します。
定義:
インタフェース LayoutManager2 内の getLayoutAlignmentY

invalidateLayout

public void invalidateLayout(Container target)
レイアウトを無効化します。レイアウトマネージャが情報をキャッシュしたら、破棄しなければならないことを示します。
定義:
インタフェース LayoutManager2 内の invalidateLayout

layoutContainer

public void layoutContainer(Container parent)
このグリッドバッグレイアウトを使って指定されたコンテナを配置します。このメソッドはこの GridBagLayout オブジェクトの制約を満たすために、指定されたコンテナでコンポーネントを再成します。

ほとんどのアプリケーションはこのメソッドを直接には呼び出しません。

パラメータ:
parent - 配置が行われるコンテナ
関連項目:
Container, Container.doLayout()

toString

public String toString()
グリッドバッグレイアウトの値の文字列表現を返します。
戻り値:
このグリッドバッグレイアウトの文字列の表現
オーバーライド:
クラス Object 内の toString

GetLayoutInfo

protected java.awt.GridBagLayoutInfo GetLayoutInfo(Container parent,
                                                   int sizeflag)
レイアウト制約を出力します。デバッグ処理に役立ちます。

AdjustForGravity

protected void AdjustForGravity(GridBagConstraints constraints,
                                Rectangle r)

GetMinSize

protected Dimension GetMinSize(Container parent,
                               java.awt.GridBagLayoutInfo info)

ArrangeGrid

protected void ArrangeGrid(Container parent)

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.