public class GroupLayout extends Object implements LayoutManager2
GroupLayoutは、Container内に配置するためにコンポーネントを階層的にグループ化するLayoutManagerです。 GroupLayoutはビルダー用ですが、ハンドコーディングすることもできます。 グループ化は、Groupクラスのインスタンスによって行われます。 GroupLayoutは、2種類のグループをサポートします。 順次グループは、子要素を1つずつ順番に配置します。 並列グループは、子要素を4とおりの方法で配置します。
各グループに任意の数の要素(Group、Component、またはギャップ)を含めることができます。 ギャップは、最小サイズ、適切なサイズ、および最大サイズを持つ不可視コンポーネントと見なすことができます。 GroupLayoutは適切なギャップもサポートし、その値はLayoutStyleから得られます。
要素はバネに似ています。 各要素には、最小、適切、および最大で指定された範囲があります。 ギャップの範囲は、開発者が指定するか、LayoutStyleによって決定されます。 Componentの範囲は、ComponentのgetMinimumSizeメソッド、getPreferredSizeメソッド、およびgetMaximumSizeメソッドによって決定されます。 また、Componentを追加するときに、そのコンポーネントの範囲ではなく、特定の範囲を指定して使用することもできます。 Groupの範囲は、グループのタイプによって決定されます。 ParallelGroupの範囲は、その要素の範囲の最大値です。 SequentialGroupの範囲は、その要素の範囲の合計値です。
GroupLayoutは、各軸を別々に扱います。 つまり、水平軸を表すグループと垂直軸を表すグループが存在します。 水平グループは、水平軸に沿った最小サイズ、推奨サイズおよび最大サイズを決定し、グループ内のコンポーネントのxの値と幅を設定します。 垂直グループは、垂直軸に沿った最小サイズ、推奨サイズおよび最大サイズを決定し、グループ内のコンポーネントのyの値と高さを設定します。 各Componentは、水平グループと垂直グループの両方に存在する必要があります。そうでない場合は、配置中あるいは最小サイズ、推奨サイズまたは最大サイズが要求されたときにIllegalStateExceptionがスローされます。
次の図に、水平軸に沿った順次グループを示します。 順次グループには3つのコンポーネントが含まれています。 並列グループは、垂直軸に沿って使用されました。
各軸を別々に扱うため、図には各グループの範囲と各軸に沿った要素が表示されています。 各コンポーネントの範囲は軸上に投影されており、グループは青(水平)と赤(垂直)で描画されています。 わかりやすいように、順次グループ内の各要素は間隔を空けて並べられています。
水平軸に沿った順次グループは、青い直線で描画されています。 順次グループは、グループ内の子要素の合計値になっている点に注意してください。
水平軸に沿った並列グループは、各コンポーネントの高さの最大値になっています。 3つのコンポーネントはすべて同じ高さなので、並列グループも同じ高さになります。
次の図に、3つの同じコンポーネントを示します。ただし、並列グループは水平軸、順次グループは垂直軸に沿っています。
3つのコンポーネントのうちもっとも値が大きいのはc1なので、並列グループのサイズはc1と同じになります。 c2とc3はc1より小さいので、コンポーネントに配置方法が指定されていればその方法、指定されていない場合は並列グループのデフォルトの配置方法で配置されます。 図のc2とc3は、LEADINGの配置方法で作成されました。 コンポーネントが右から左へ配置されている場合、c2とc3は逆向きに配置されます。
次の図に、水平軸と垂直軸に沿った順次グループを示します。
GroupLayoutは、Component間にギャップを挿入する機能を提供します。 ギャップのサイズは、LayoutStyleのインスタンスによって決定されます。 この機能は、setAutoCreateGapsメソッドを使って有効にすることができます。 同様に、setAutoCreateContainerGapsメソッドを使って、親コンテナの端とコンテナに接するコンポーネント間にギャップを挿入することもできます。
次のコードでは、ある列に2つのラベル、次の列に2つのテキスト・フィールドが続くパネルを構築します。
JComponent panel = ...;
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
// Turn on automatically adding gaps between components
layout.setAutoCreateGaps(true);
// Turn on automatically creating gaps between components that touch
// the edge of the container and the container.
layout.setAutoCreateContainerGaps(true);
// Create a sequential group for the horizontal axis.
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
// The sequential group in turn contains two parallel groups.
// One parallel group contains the labels, the other the text fields.
// Putting the labels in a parallel group along the horizontal axis
// positions them at the same x location.
//
// Variable indentation is used to reinforce the level of grouping.
hGroup.addGroup(layout.createParallelGroup().
addComponent(label1).addComponent(label2));
hGroup.addGroup(layout.createParallelGroup().
addComponent(tf1).addComponent(tf2));
layout.setHorizontalGroup(hGroup);
// Create a sequential group for the vertical axis.
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
// The sequential group contains two parallel groups that align
// the contents along the baseline. The first parallel group contains
// the first label and text field, and the second parallel group contains
// the second label and text field. By using a sequential group
// the labels and text fields are positioned vertically after one another.
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(label1).addComponent(tf1));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(label2).addComponent(tf2));
layout.setVerticalGroup(vGroup);
実行すると、次のものが生成されます。
この配置は、次のもので構成されます。
Groupのaddメソッドのいずれかを使用して間接的に行われます。
addメソッドが呼出し側を返します。 これにより、簡単にメソッド呼出しを連鎖させることができます。 たとえば、group.addComponent(label1).addComponent(label2);はgroup.addComponent(label1); group.addComponent(label2);と同等です。
Groupには、publicコンストラクタがありません。代わりに、GroupLayoutのcreateメソッドを使用してください。
| 修飾子と型 | クラス | 説明 |
|---|---|---|
static class |
GroupLayout.Alignment |
ParallelGroupがその子を配置するときに選択できる方法の列挙です。 |
class |
GroupLayout.Group |
Groupは、GroupLayoutでサポートされる2種類のオペレーションの基盤になります。2種類のオペレーションには、コンポーネントを1つずつレイアウトする処理(SequentialGroup)と、配置処理(ParallelGroup)があります。 |
class |
GroupLayout.ParallelGroup |
子の配置とサイズ設定を行う
Groupです。 |
class |
GroupLayout.SequentialGroup |
要素の配置とサイズ設定を1つずつ順番に行う
Groupです。 |
| 修飾子と型 | フィールド | 説明 |
|---|---|---|
static int |
DEFAULT_SIZE |
特定の範囲値として使用するべきコンポーネントからのサイズ(ギャップ)を示します。
|
static int |
PREFERRED_SIZE |
特定の範囲値として使用するべきコンポーネントからの適切なサイズ(ギャップ)を示します。
|
| コンストラクタ | 説明 |
|---|---|
GroupLayout(Container host) |
指定された
ContainerのGroupLayoutを作成します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
addLayoutComponent(Component component, Object constraints) |
Componentが親コンテナに追加されたことを示す通知。 |
void |
addLayoutComponent(String name, Component component) |
Componentが親コンテナに追加されたことを示す通知。 |
GroupLayout.ParallelGroup |
createBaselineGroup(boolean resizable, boolean anchorBaselineToTop) |
ベースラインに沿って要素を配置する
ParallelGroupを作成し、返します。 |
GroupLayout.ParallelGroup |
createParallelGroup() |
配置方法
Alignment.LEADINGでParallelGroupを作成し、返します。 |
GroupLayout.ParallelGroup |
createParallelGroup(GroupLayout.Alignment alignment) |
指定の配置方法で
ParallelGroupを作成し、返します。 |
GroupLayout.ParallelGroup |
createParallelGroup(GroupLayout.Alignment alignment, boolean resizable) |
指定の配置方法と指定のサイズ変更動作で
ParallelGroupを作成し、返します。 |
GroupLayout.SequentialGroup |
createSequentialGroup() |
SequentialGroupを作成し、返します。 |
boolean |
getAutoCreateContainerGaps() |
コンテナとこのコンテナに接するコンポーネント間のギャップが自動的に作成される場合は、
trueを返します。 |
boolean |
getAutoCreateGaps() |
コンポーネント間のギャップが自動的に作成される場合は、
trueを返します。 |
boolean |
getHonorsVisibility() |
コンポーネントのサイズおよび配置の設定の際、コンポーネントの可視設定を考慮するかどうかを返します。
|
float |
getLayoutAlignmentX(Container parent) |
x軸方向の配置を返します。
|
float |
getLayoutAlignmentY(Container parent) |
y軸方向の配置を返します。
|
LayoutStyle |
getLayoutStyle() |
コンポーネント間の適切なギャップの計算に使用する
LayoutStyleを返します。 |
void |
invalidateLayout(Container parent) |
レイアウトを無効にします。このとき、レイアウト・マネージャが情報をキャッシュしていればそれを破棄します。
|
void |
layoutContainer(Container parent) |
指定されたコンテナを配置します。
|
void |
linkSize(Component... components) |
指定のコンポーネントを、適切なサイズ、最小サイズ、または最大サイズを考慮せず、同じサイズに設定します。
|
void |
linkSize(int axis, Component... components) |
指定のコンポーネントを、適切なサイズ、最小サイズ、または最大サイズを考慮せず、同じサイズに設定し、指定の軸に沿って配置します。
|
Dimension |
maximumLayoutSize(Container parent) |
指定のコンテナの最大サイズを返します。
|
Dimension |
minimumLayoutSize(Container parent) |
指定のコンテナの最小サイズを返します。
|
Dimension |
preferredLayoutSize(Container parent) |
指定のコンテナの適切なサイズを返します。
|
void |
removeLayoutComponent(Component component) |
親コンテナから
Componentが削除されたことを示す通知です。 |
void |
replace(Component existingComponent, Component newComponent) |
既存のコンポーネントを新しいコンポーネントで置き換えます。
|
void |
setAutoCreateContainerGaps(boolean autoCreateContainerPadding) |
コンテナと、このコンテナのボーダーに接するコンポーネント間のギャップを、自動的に作成するかどうかを返します。
|
void |
setAutoCreateGaps(boolean autoCreatePadding) |
コンポーネント間のギャップを自動的に作成するかどうかを返します。
|
void |
setHonorsVisibility(boolean honorsVisibility) |
コンポーネントのサイズおよび配置の設定の際、コンポーネントの可視設定を考慮するかどうかを設定します。
|
void |
setHonorsVisibility(Component component, Boolean honorsVisibility) |
サイズおよび配置の設定の際、コンポーネントの可視設定を考慮するかどうかを設定します。
|
void |
setHorizontalGroup(GroupLayout.Group group) |
Groupが、水平軸に沿ってコンポーネントの配置とサイズを指定するように設定します。 |
void |
setLayoutStyle(LayoutStyle layoutStyle) |
コンポーネント間の適切なギャップの計算に使用する
LayoutStyleを設定します。 |
void |
setVerticalGroup(GroupLayout.Group group) |
Groupが、垂直軸に沿ってコンポーネントの配置とサイズを指定するように設定します。 |
String |
toString() |
この
GroupLayoutの文字列表現を返します。 |
public static final int DEFAULT_SIZE
GroupLayout.Group, 定数フィールド値public static final int PREFERRED_SIZE
GroupLayout.Group, 定数フィールド値public GroupLayout(Container host)
ContainerのGroupLayoutを作成します。host - GroupLayoutがLayoutManagerとなるContainerIllegalArgumentException - ホストがnullである場合public void setHonorsVisibility(boolean honorsVisibility)
trueは、不可視コンポーネントを配置の一部として扱わないことを示します。 値falseは、コンポーネントの配置およびサイズ設定の際、可視設定を考慮しないことを示します。
値falseは、コンポーネントの可視設定が動的に変更された場合に、周囲のコンポーネントやサイズを変更したくない場合に使用します。
可視設定が明示的に指定されていないコンポーネントには、指定された値が使用されます。
デフォルトはtrueです。
honorsVisibility - コンポーネントのサイズおよび配置の設定時にコンポーネントの可視設定を考慮するかどうかsetHonorsVisibility(Component,Boolean)public boolean getHonorsVisibility()
public void setHonorsVisibility(Component component, Boolean honorsVisibility)
Boolean.TRUEは、不可視componentを配置の一部として扱わないことを示します。 値falseは、componentの配置およびサイズの設定の際、可視設定を考慮しないことを示します。 値nullは、単一の引数メソッドsetHonorsVisibilityによって指定された値を使用すべきであることを示します。
componentがContainerの子でない場合、このGroupLayoutがマネージャとなり、Containerに追加されます。
component - コンポーネントhonorsVisibility - サイズおよび配置の設定時にこのcomponentの可視設定を考慮するかどうかIllegalArgumentException - componentがnullである場合setHonorsVisibility(Component,Boolean)public void setAutoCreateGaps(boolean autoCreatePadding)
trueで、SequentialGroupに2つのコンポーネントを追加した場合、この2つのコンポーネント間のギャップは自動的に作成されます。 デフォルトはfalseです。 autoCreatePadding - コンポーネント間のギャップを自動的に作成するかどうかpublic boolean getAutoCreateGaps()
trueを返します。truepublic void setAutoCreateContainerGaps(boolean autoCreateContainerPadding)
falseです。 autoCreateContainerPadding - コンテナとこのコンテナのボーダーに接するコンポーネント間のギャップを自動的に作成するかどうかpublic boolean getAutoCreateContainerGaps()
trueを返します。truepublic void setHorizontalGroup(GroupLayout.Group group)
Groupが、水平軸に沿ってコンポーネントの配置とサイズを指定するように設定します。group - 水平軸に沿ってコンポーネントの配置とサイズを指定するGroupIllegalArgumentException - グループがnullの場合public void setVerticalGroup(GroupLayout.Group group)
Groupが、垂直軸に沿ってコンポーネントの配置とサイズを指定するように設定します。group - 垂直軸に沿ってコンポーネントの配置とサイズを指定するGroupIllegalArgumentException - グループがnullの場合public GroupLayout.SequentialGroup createSequentialGroup()
SequentialGroupを作成し、返します。SequentialGrouppublic GroupLayout.ParallelGroup createParallelGroup()
Alignment.LEADINGでParallelGroupを作成し、返します。 これは、より汎用性の高いcreateParallelGroup(Alignment)メソッドのカバー・メソッドです。 ParallelGroupcreateParallelGroup(Alignment)public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment)
ParallelGroupを作成し、返します。 これは、より汎用性の高いcreateParallelGroup(Alignment,boolean)メソッド(2番目の引数の値がtrue)のカバー・メソッドです。 alignment - グループの要素の配置方法ParallelGroupIllegalArgumentException - alignmentがnullである場合createBaselineGroup(boolean, boolean), GroupLayout.ParallelGrouppublic GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment, boolean resizable)
ParallelGroupを作成し、返します。 alignment引数は、グループをいっぱいに埋めることのない子要素を配置する方法を指定します。 たとえば、配置方法がTRAILINGであるParallelGroupが100であり、子に必要な値が50の場合、この子は50の位置に配置されます(コンポーネントの方向は左から右)。
ベースラインの配置方法は、垂直軸でのみ使用します。 ベースラインの配置方法により水平軸に沿って作成されたParallelGroupは、LEADINGとして処理されます。
ベースライン・グループの動作の詳細は、ParallelGroupを参照してください。
alignment - グループの要素の配置方法resizable - グループのサイズ変更が可能な場合はtrue、グループのサイズ変更ができない場合は、適切なサイズがグループの最小サイズおよび最大サイズとして使用されるParallelGroupIllegalArgumentException - alignmentがnullである場合createBaselineGroup(boolean, boolean), GroupLayout.ParallelGrouppublic GroupLayout.ParallelGroup createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
ParallelGroupを作成し、返します。resizable - グループのサイズ変更が可能かどうかanchorBaselineToTop - ベースラインのアンカー位置がグループの上部であるか下部であるかcreateBaselineGroup(boolean, boolean), GroupLayout.ParallelGrouppublic void linkSize(Component... components)
これを複数回使用して、任意の数のコンポーネントに同じサイズを割り当てることができます。
リンクを持つコンポーネントのサイズは変更できません。
components - 同じサイズでないComponentIllegalArgumentException - componentsがnullであるか、nullを含む場合linkSize(int,Component[])public void linkSize(int axis,
Component... components)
これを複数回使用して、任意の数のコンポーネントに同じサイズを割り当てることができます。
リンクを持つComponentのサイズは変更できません。
components - 同じサイズでないComponentaxis - サイズをリンクする軸。SwingConstants.HORIZONTALまたはSwingConstans.VERTICALIllegalArgumentException - componentsがnullであるか、nullを含む場合。あるいはaxisがSwingConstants.HORIZONTALまたはSwingConstants.VERTICALでない場合。public void replace(Component existingComponent, Component newComponent)
existingComponent - 削除され、newComponentで置き換えられるコンポーネントnewComponent - existingComponentの位置に置かれるコンポーネントIllegalArgumentException - どちらかのコンポーネントがnullである場合、またはexistingComponentがこのレイアウト・マネージャで管理されていない場合public void setLayoutStyle(LayoutStyle layoutStyle)
LayoutStyleを設定します。 値nullは、LayoutStyleの共有インスタンスを使用すべきであることを示します。 layoutStyle - 使用するLayoutStyleLayoutStylepublic LayoutStyle getLayoutStyle()
LayoutStyleを返します。 これは、setLayoutStyleに指定された値(nullの場合がある)を返します。 LayoutStylepublic void addLayoutComponent(String name, Component component)
Componentが親コンテナに追加されたことを示す通知。 このメソッドを直接呼び出すのではなく、Groupメソッドを使ってComponentを追加するようにしてください。 addLayoutComponent、インタフェースLayoutManagername - コンポーネントに関連付けられる文字列component - 追加されるComponentpublic void removeLayoutComponent(Component component)
Componentが削除されたことを示す通知です。 このメソッドを直接呼び出すのではなく、親Container上でremoveメソッドを呼び出すようにしてください。 removeLayoutComponent、インタフェースLayoutManagercomponent - 削除されるコンポーネントComponent.remove(java.awt.MenuComponent)public Dimension preferredLayoutSize(Container parent)
preferredLayoutSize、インタフェースLayoutManagerparent - 適切なサイズを返すコンテナparentの適切なサイズIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合IllegalStateException - このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getPreferredSize()public Dimension minimumLayoutSize(Container parent)
minimumLayoutSize、インタフェースLayoutManagerparent - サイズを返すコンテナparentの最小サイズIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合IllegalStateException - このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getMinimumSize()public void layoutContainer(Container parent)
layoutContainer、インタフェースLayoutManagerparent - 配置されるコンテナIllegalStateException - このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合public void addLayoutComponent(Component component, Object constraints)
Componentが親コンテナに追加されたことを示す通知。 このメソッドを直接呼び出すのではなく、Groupメソッドを使ってComponentを追加するようにしてください。 addLayoutComponent、インタフェースLayoutManager2component - 追加されるコンポーネントconstraints - コンポーネントを配置する位置の説明public Dimension maximumLayoutSize(Container parent)
maximumLayoutSize、インタフェースLayoutManager2parent - サイズを返すコンテナparentの最大サイズIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合IllegalStateException - このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getMaximumSize()public float getLayoutAlignmentX(Container parent)
getLayoutAlignmentX、インタフェースLayoutManager2parent - このLayoutManagerをホストするContainer.5を返すIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合public float getLayoutAlignmentY(Container parent)
getLayoutAlignmentY、インタフェースLayoutManager2parent - このLayoutManagerをホストするContainer.5を返すIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合public void invalidateLayout(Container parent)
invalidateLayout、インタフェースLayoutManager2parent - このLayoutManagerをホストするContainerIllegalArgumentException - parentが、これを作成したときに使用したContainerでない場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。