JavaTM 2 Platform
Std. Ed. v1.3

java.awt
クラス GridBagLayout

java.lang.Object
  |
  +--java.awt.GridBagLayout
すべての実装インタフェース:
LayoutManager, LayoutManager2, Serializable

public class GridBagLayout
extends Object
implements LayoutManager2, Serializable

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

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

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

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

GridBagConstraints.gridxGridBagConstraints.gridy
コンポーネントの表示領域の左上にあたるセルを指定します。左上隅にあるセルは、gridx = 0,gridy = 0 のアドレスを持ちます。そのコンポーネントの直前にコンテナに追加されたコンポーネントのすぐ右 (gridx) またはすぐ下 (gridy) に配置する場合は、GridBagConstraints.RELATIVE (既定値) を設定します。
GridBagConstraints.gridwidthGridBagConstraints.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.ipadxGridBagConstraints.ipady
レイアウト内のコンポーネントの内側のパディング (コンポーネントの最小サイズに追加する値) を指定します。コンポーネントの幅は、少なくとも最小の幅 + (ipadx * 2) ピクセルとなります (コンポーネントの両側にパディングされるため)。同様に、コンポーネントの高さは、少なくとも最小の高さ + (ipady * 2) ピクセルとなります。
GridBagConstraints.insets
コンポーネントの外側のパディング、つまりコンポーネントと表示領域の端との間の最小の空間を指定します。
GridBagConstraints.anchor
コンポーネントが表示領域よりも小さい場合に、(表示領域内の) どこにコンポーネントを配置するのかを決定するために使用されます。指定できる値は、GridBagConstraints.CENTER (デフォルト)、GridBagConstraints.NORTHGridBagConstraints.NORTHEASTGridBagConstraints.EASTGridBagConstraints.SOUTHEASTGridBagConstraints.SOUTHGridBagConstraints.SOUTHWESTGridBagConstraints.WESTGridBagConstraints.NORTHWEST です。
GridBagConstraints.weightxGridBagConstraints.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(Component), setConstraints(Component, GridBagConstraints), lookupConstraints(Component)

layoutInfo

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

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)
指定された名前で、指定されたコンポーネントをレイアウトに追加します。
定義:
インタフェース LayoutManager 内の addLayoutComponent
パラメータ:
name - コンポーネントの名前
comp - 追加されるコンポーネント

addLayoutComponent

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

removeLayoutComponent

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

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

定義:
インタフェース LayoutManager 内の removeLayoutComponent
パラメータ:
comp - 削除されるコンポーネント
関連項目:
Container.remove(java.awt.Component), Container.removeAll()

preferredLayoutSize

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

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

定義:
インタフェース LayoutManager 内の preferredLayoutSize
パラメータ:
target - 配置が行われるコンテナ
関連項目:
Container.getPreferredSize()

minimumLayoutSize

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

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

定義:
インタフェース LayoutManager 内の minimumLayoutSize
パラメータ:
target - 配置が行われるコンテナ
関連項目:
Container.doLayout()

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
指定されたターゲットコンテナの与えられたコンポーネントに対するレイアウトの最大サイズを返します。
定義:
インタフェース LayoutManager2 内の maximumLayoutSize
パラメータ:
target - レイアウトする必要があるコンポーネント
関連項目:
Container, minimumLayoutSize(Container), preferredLayoutSize(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 オブジェクトの制約を満たすために、指定されたコンテナでコンポーネントを再成形します。

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

定義:
インタフェース LayoutManager 内の layoutContainer
パラメータ:
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)

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.