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, 2014, Oracle and/or its affiliates. All rights reserved.