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
となる Container
IllegalArgumentException
- ホストが 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
を返します。true
public void setAutoCreateContainerGaps(boolean autoCreateContainerPadding)
false
です。autoCreateContainerPadding
- コンテナとこのコンテナのボーダーに接するコンポーネント間のギャップを自動的に作成するかどうかpublic boolean getAutoCreateContainerGaps()
true
を返します。true
public void setHorizontalGroup(GroupLayout.Group group)
Group
が、水平軸に沿ってコンポーネントの配置とサイズを指定するように設定します。group
- 水平軸に沿ってコンポーネントの配置とサイズを指定する Group
IllegalArgumentException
- グループが null
の場合public void setVerticalGroup(GroupLayout.Group group)
Group
が、垂直軸に沿ってコンポーネントの配置とサイズを指定するように設定します。group
- 垂直軸に沿ってコンポーネントの配置とサイズを指定する Group
IllegalArgumentException
- グループが null
の場合public GroupLayout.SequentialGroup createSequentialGroup()
SequentialGroup
を作成し、返します。SequentialGroup
public GroupLayout.ParallelGroup createParallelGroup()
Alignment.LEADING
で ParallelGroup
を作成し、返します。これは、より汎用性の高い createParallelGroup(Alignment)
メソッドのカバーメソッドです。ParallelGroup
createParallelGroup(Alignment)
public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment)
ParallelGroup
を作成し、返します。これは、より汎用性の高い createParallelGroup(Alignment,boolean)
メソッド (2 番目の引数の値が true
) のカバーメソッドです。alignment
- グループの要素の配置方法ParallelGroup
IllegalArgumentException
- alignment
が null
である場合createBaselineGroup(boolean, boolean)
, GroupLayout.ParallelGroup
public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment, boolean resizable)
ParallelGroup
を作成し、返します。alignment
引数は、グループをいっぱいに埋めることのない子要素を配置する方法を指定します。たとえば、配置方法が TRAILING
である ParallelGroup
が 100 であり、子に必要な値が 50 の場合、この子は 50 の位置に配置されます (コンポーネントの方向は左から右)。
ベースラインの配置方法は、垂直軸でのみ使用します。ベースラインの配置方法により水平軸に沿って作成された ParallelGroup
は、LEADING
として処理されます。
ベースライングループの動作の詳細は、ParallelGroup
を参照してください。
alignment
- グループの要素の配置方法resizable
- グループのサイズ変更が可能な場合は true
、グループのサイズ変更ができない場合は、適切なサイズがグループの最小サイズおよび最大サイズとして使用されるParallelGroup
IllegalArgumentException
- alignment
が null
である場合createBaselineGroup(boolean, boolean)
, GroupLayout.ParallelGroup
public GroupLayout.ParallelGroup createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
ParallelGroup
を作成し、返します。resizable
- グループのサイズ変更が可能かどうかanchorBaselineToTop
- ベースラインのアンカー位置がグループの上部であるか下部であるかcreateBaselineGroup(boolean, boolean)
, GroupLayout.ParallelGroup
public void linkSize(Component... components)
これを複数回使用して、任意の数のコンポーネントに同じサイズを割り当てることができます。
リンクを持つコンポーネントのサイズは変更できません。
components
- 同じサイズでない Component
IllegalArgumentException
- components
が null
であるか、null
を含む場合linkSize(int,Component[])
public void linkSize(int axis, Component... components)
これを複数回使用して、任意の数のコンポーネントに同じサイズを割り当てることができます。
リンクを持つ Component
のサイズは変更できません。
components
- 同じサイズでない Component
axis
- サイズをリンクする軸。SwingConstants.HORIZONTAL
または SwingConstans.VERTICAL
IllegalArgumentException
- 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
- 使用する LayoutStyle
LayoutStyle
public LayoutStyle getLayoutStyle()
LayoutStyle
を返します。これは、setLayoutStyle
に指定された値 (null
の場合がある) を返します。LayoutStyle
public void addLayoutComponent(String name, Component component)
Component
が親コンテナに追加されたことを示す通知。このメソッドを直接呼び出すのではなく、Group
メソッドを使って Component
を追加するようにしてください。addLayoutComponent
、インタフェース: LayoutManager
name
- コンポーネントに関連付けられる文字列component
- 追加される Component
public void removeLayoutComponent(Component component)
Component
が削除されたことを示す通知です。このメソッドは直接呼び出すべきではありません。親 Container
上で remove
メソッドを呼び出すようにしてください。removeLayoutComponent
、インタフェース: LayoutManager
component
- 削除されるコンポーネントComponent.remove(java.awt.MenuComponent)
public Dimension preferredLayoutSize(Container parent)
preferredLayoutSize
、インタフェース: LayoutManager
parent
- 適切なサイズを返すコンテナparent
の適切なサイズIllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合IllegalStateException
- このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getPreferredSize()
public Dimension minimumLayoutSize(Container parent)
minimumLayoutSize
、インタフェース: LayoutManager
parent
- サイズを返すコンテナparent
の最小サイズIllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合IllegalStateException
- このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getMinimumSize()
public void layoutContainer(Container parent)
layoutContainer
、インタフェース: LayoutManager
parent
- 配置されるコンテナIllegalStateException
- このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合public void addLayoutComponent(Component component, Object constraints)
Component
が親コンテナに追加されたことを示す通知。このメソッドを直接呼び出すのではなく、Group
メソッドを使って Component
を追加するようにしてください。addLayoutComponent
、インタフェース: LayoutManager2
component
- 追加されるコンポーネントconstraints
- コンポーネントを配置する位置の説明public Dimension maximumLayoutSize(Container parent)
maximumLayoutSize
、インタフェース: LayoutManager2
parent
- サイズを返すコンテナparent
の最大サイズIllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合IllegalStateException
- このレイアウトに、水平グループにも垂直グループにも属さないコンポーネントが追加された場合Container.getMaximumSize()
public float getLayoutAlignmentX(Container parent)
getLayoutAlignmentX
、インタフェース: LayoutManager2
parent
- この LayoutManager
をホストする Container
.5
を返すIllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合public float getLayoutAlignmentY(Container parent)
getLayoutAlignmentY
、インタフェース: LayoutManager2
parent
- この LayoutManager
をホストする Container
.5
を返すIllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合public void invalidateLayout(Container parent)
invalidateLayout
、インタフェース: LayoutManager2
parent
- この LayoutManager をホストする Container
IllegalArgumentException
- parent
が、これを作成したときに使用した Container
でない場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.