|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.swing.SpringLayout
SpringLayout
は、一連の制約に基づいて、関連するコンテナの子を配置します。SpringLayout
の使用例については、「The Java Tutorial」の「How to Use SpringLayout」を参照してください。
Spring
オブジェクトで表される各制約は、2 つのコンポーネントエッジ間の垂直方向または水平方向の距離を制御します。エッジは、コンテナの子またはコンテナ自身に属すことができます。たとえば、コンポーネントに許される幅は、コンポーネントの west (左) エッジと east (右) エッジ間の距離を制御する制約を使用して表現できます。コンポーネントに許される y 座標は、コンポーネントの north (上端) エッジとコンテナの north エッジ間の距離の制約によって表現できます。
SpringLayout
によって制御されるコンテナのすべての子は、コンテナ自身と同様に、関連する制約を 1 セットだけ持ちます。制約は、SpringLayout.Constraints
オブジェクトによって表現されます。SpringLayout
がデフォルトで作成する制約では、関連するコンポーネントに、コンポーネントの Component.getMinimumSize()
メソッド、Component.getPreferredSize()
メソッド、および Component.getMaximumSize()
メソッドが返す minimum、preferred、maximum の各サイズが設定されます。x と y の位置は初期状態では制約が設定されていないため、Component
の位置は、制約を設定するまで親 Container
の Insets
に対して 0,0 となります。
コンポーネントの制約を変更するには複数の方法があります。putConstraint
メソッドのどれかを使用すると、同一コンテナ内の 2 つのコンポーネントのエッジに接続するスプリングを確立できます。また、getConstraints
メソッドを使用すると、適切な SpringLayout.Constraints
オブジェクトを取得でき、その後 1 つ以上のスプリングを変更できます。getConstraint
メソッドを使用すると、コンポーネントの特定のエッジに対するスプリングを取得でき、その後スプリングを変更できます。Container.add(Component, Object)
を使用すると、コンポーネントをコンテナに追加するときに制約オブジェクトを指定することにより、独自の SpringLayout.Constraints
オブジェクトをコンポーネントに関連付けることができます。
各制約を表す Spring
オブジェクトには、最小 (minimum)、優先(preferred)、最大(maximum)、および現在の値が設定されます。スプリングの現在の値は、minimum と maximum の間にある値で、Spring.sum(javax.swing.Spring, javax.swing.Spring)
メソッドの説明で示される式に従います。minimum、preferred、および maximum の値が等しい場合、現在の値も常に等しくなります。このような柔軟性のないスプリングは、「柱」 (strut) と呼ばれます。ファクトリメソッドの Spring.constant(int)
を使用すると、柱を生成できます。Spring
クラスには、別のスプリングに依存するスプリングなど、その他の種類のスプリングを作成するファクトリメソッドも用意されています。
SpringLayout
では、各エッジの位置は別の 1 つエッジだけの位置に依存します。制約を後で追加してエッジに新しいバインディングを作成すると、以前のバインディングは破棄され、エッジは 1 つのエッジに依存した状態のまま維持されます。スプリングは、コンテナとその直接の子のエッジ間にだけ接続する必要があります。SpringLayout
の動作は、別のコンテナの内部または外部からコンポーネントのエッジに接続する制約によって表現される場合、定義されません。
注: 多くのレイアウトマネージャとは異なり、SpringLayout
は、管理するコンポーネントの位置を自動的に設定しません。SpringLayout
を使用する GUI をハンドコーディングする場合は、west/east および north/south の位置に制約を設定することによって、コンポーネントの位置を初期化してください。使用する制約によっては、コンテナのサイズを明示的に設定することが必要な場合もあります。
SpringLayout
は単純ですが、ほとんどのレイアウトマネージャの動作をエミュレートできます。FlowLayout
の行ブレークのような機能については、Spring
クラスに専用のサブクラスを作成する必要があります。
SpringLayout
を使用すると、Box
を入れ子にした組み合わせでは解決できないような、レイアウトに関する難しい問題も多く解決できます。SpringLayout
は LayoutManager2
規約を正確に遵守しているため、ほかのレイアウトマネージャを入れ子にできます。これは、ほかのレイアウトマネージャに含まれる制約を作成する方法よりも望ましい方法です。
SpringLayout
によるレイアウトオペレーションの漸近的複雑性は、制約またはコンポーネント、あるいはその両方の数に比例します。
Spring
,
SpringLayout.Constraints
入れ子クラスの概要 | |
static class |
SpringLayout.Constraints
Constraints オブジェクトは、SpringLayout が制御するコンテナ内のコンポーネントのサイズ変更方法および位置変更方法を決定する制約を保持します。 |
フィールドの概要 | |
static String |
EAST
コンポーネントの境界の矩形の右端を指定します。 |
static String |
NORTH
コンポーネントの境界の矩形の上端を指定します。 |
static String |
SOUTH
コンポーネントの境界の矩形の下端を指定します。 |
static String |
WEST
コンポーネントの境界の矩形の左端を指定します。 |
コンストラクタの概要 | |
SpringLayout()
新しい SpringLayout を構築します。 |
メソッドの概要 | |
void |
addLayoutComponent(Component component,
Object constraints)
constraints が SpringLayout.Constraints のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。
|
void |
addLayoutComponent(String name,
Component c)
このレイアウトマネージャはコンポーネントごとの文字列を使用しないため、何もしません。 |
Spring |
getConstraint(String edgeName,
Component c)
コンポーネントの指定されたエッジと親の上端エッジまたは左エッジとの間の距離を制御するスプリングを返します。 |
SpringLayout.Constraints |
getConstraints(Component c)
指定されたコンポーネントの制約を返します。 |
float |
getLayoutAlignmentX(Container p)
0.5f (中央揃え) を返します。 |
float |
getLayoutAlignmentY(Container p)
0.5f (中央揃え) を返します。 |
void |
invalidateLayout(Container p)
レイアウトを無効にします。 |
void |
layoutContainer(Container parent)
指定されたコンテナを配置します。 |
Dimension |
maximumLayoutSize(Container parent)
指定されたコンテナの最大サイズの寸法を計算します。 |
Dimension |
minimumLayoutSize(Container parent)
指定されたコンテナの最小サイズの寸法を計算します。 |
Dimension |
preferredLayoutSize(Container parent)
指定されたコンテナの推奨サイズの寸法を計算します。 |
void |
putConstraint(String e1,
Component c1,
int pad,
String e2,
Component c2)
コンポーネント c1 のエッジ e1 をコンポーネント c2 のエッジ e2 に、エッジ間の距離を固定して接続します。 |
void |
putConstraint(String e1,
Component c1,
Spring s,
String e2,
Component c2)
コンポーネント c1 のエッジ e1 とコンポーネント c2 のエッジ e2 を接続します。 |
void |
removeLayoutComponent(Component c)
指定されたコンポーネントに関連付けれられた制約を削除します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final String NORTH
public static final String SOUTH
public static final String EAST
public static final String WEST
コンストラクタの詳細 |
public SpringLayout()
SpringLayout
を構築します。
メソッドの詳細 |
public void addLayoutComponent(String name, Component c)
LayoutManager
内の addLayoutComponent
name
- コンポーネントに関連付けられた文字列c
- 追加されるコンポーネントpublic void removeLayoutComponent(Component c)
LayoutManager
内の removeLayoutComponent
c
- コンテナから削除されるコンポーネントpublic Dimension minimumLayoutSize(Container parent)
LayoutManager
の記述:
LayoutManager
内の minimumLayoutSize
parent
- 配置されるコンポーネントLayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension preferredLayoutSize(Container parent)
LayoutManager
の記述:
LayoutManager
内の preferredLayoutSize
parent
- 配置されるコンテナLayoutManager.minimumLayoutSize(java.awt.Container)
public Dimension maximumLayoutSize(Container parent)
LayoutManager2
の記述:
LayoutManager2
内の maximumLayoutSize
Component.getMaximumSize()
,
LayoutManager
public void addLayoutComponent(Component component, Object constraints)
constraints
が SpringLayout.Constraints
のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。
LayoutManager2
内の addLayoutComponent
component
- 追加するコンポーネントconstraints
- コンポーネントの制約SpringLayout.Constraints
public float getLayoutAlignmentX(Container p)
LayoutManager2
内の getLayoutAlignmentX
public float getLayoutAlignmentY(Container p)
LayoutManager2
内の getLayoutAlignmentY
public void invalidateLayout(Container p)
LayoutManager2
の記述:
LayoutManager2
内の invalidateLayout
public void putConstraint(String e1, Component c1, int pad, String e2, Component c2)
c1
のエッジ e1
をコンポーネント c2
のエッジ e2
に、エッジ間の距離を固定して接続します。この制約により、後続のすべてのレイアウトオペレーションで、次の代入が発生します。
value(e1, c1) = value(e2, c2) + pad
e1
- 依存するエッジc1
- 依存するコンポーネントpad
- 依存する側とされる側の間の固定距離e2
- 依存されるエッジc2
- 依存されるコンポーネントputConstraint(String, Component, Spring, String, Component)
public void putConstraint(String e1, Component c1, Spring s, String e2, Component c2)
c1
のエッジ e1
とコンポーネント c2
のエッジ e2
を接続します。エッジ (e2, c2)
の値が変更されると、(e2, c2)
と s
の (スプリング) sum によってエッジ (e1, c1)
が計算されます。各エッジは、SpringLayout.NORTH
、SpringLayout.SOUTH
、SpringLayout.EAST
、SpringLayout.WEST
のどれかの値を持つ必要があります。
e1
- 依存するエッジc1
- 依存するコンポーネントs
- 依存する側と依存される側を接続するスプリングe2
- 依存されるエッジc2
- 依存されるコンポーネントputConstraint(String, Component, int, String, Component)
,
NORTH
,
SOUTH
,
EAST
,
WEST
public SpringLayout.Constraints getConstraints(Component c)
GridBagLayout
getConstraints
メソッドとは異なり、このメソッドは制約を複製しません。コンポーネントに関連付けられた制約がない場合は、親のインセットに対して 0,0 の位置にあるデフォルトの制約オブジェクトを返します。幅と高さはコンポーネントの minimum、maximum、および preferred の各サイズに制約されます。メソッドが呼び出された時点でサイズの特性は凍結されませんが、変更されたコンポーネントの特性を追跡する特性を持つ制約オブジェクトを返します。
c
- 返される制約を持つコンポーネント
public Spring getConstraint(String edgeName, Component c)
SpringLayout
によって内部的に検出されます。
edgeName
- SpringLayout.NORTH
、SpringLayout.SOUTH
、SpringLayout.EAST
、SpringLayout.WEST
のどれかc
- エッジスプリングを要求されるコンポーネント
NORTH
,
SOUTH
,
EAST
,
WEST
public void layoutContainer(Container parent)
LayoutManager
の記述:
LayoutManager
内の layoutContainer
parent
- 配置されるコンテナ
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.