- すべての実装されたインタフェース:
LayoutManager
,LayoutManager2
SpringLayout
は、関連付けられているコンテナの子を一連の制約に従ってレイアウトします。 SpringLayoutの使用例については、「The Java Tutorial」の「How to Use SpringLayout
」を参照してください。
Spring
オブジェクトで表される各制約は、2つのコンポーネント・エッジ間の垂直方向または水平方向の距離を制御します。 エッジは、コンテナの子またはコンテナ自身に属すことができます。 たとえば、許容されるコンポーネントの幅は、コンポーネントの西(左)のエッジと東(右)のエッジ間の距離を制御する制約を使用して表現できます。 許容されるコンポーネントのy座標は、コンポーネントの北(上端)のエッジとそのコンテナの北のエッジ間の距離の制約によって表現できます。
SpringLayout
によって制御されるコンテナのすべての子は、コンテナ自身と同様に、関連する制約を1セットのみ持ちます。 制約は、SpringLayout.Constraints
オブジェクトによって表現されます。 SpringLayout
がデフォルトで作成する制約では、関連するコンポーネントに、コンポーネントのComponent.getMinimumSize()
メソッド、Component.getPreferredSize()
メソッドおよびComponent.getMaximumSize()
メソッドが返す最小サイズ、推奨サイズおよび最大サイズが設定されます。 xとyの位置は初期状態では制約が設定されていないため、Component
の位置は、制約を設定するまで親Container
のInsets
に対して0,0となります。
コンポーネントの制約を変更するには複数の方法があります。 putConstraint
メソッドのいずれかを使用すると、同一コンテナ内の2つのコンポーネントのエッジに接続するスプリングを確立できます。 また、getConstraints
メソッドを使用すると、適切なSpringLayout.Constraints
オブジェクトを取得でき、その後1つ以上のスプリングを変更できます。 getConstraint
メソッドを使用すると、コンポーネントの特定のエッジに対するスプリングを取得でき、その後スプリングを変更できます。 Container.add(Component, Object)
を使用すると、コンポーネントをコンテナに追加するときに制約オブジェクトを指定することにより、独自のSpringLayout.Constraints
オブジェクトをコンポーネントに関連付けることができます。
各制約を表すSpring
オブジェクトには、最小値(minimum値)、推奨値(preferred値)、最大値(maximum値)および現在の値が設定されます。 スプリングの現在の値は、最小値と最大値の間にある値で、Spring.sum(javax.swing.Spring, javax.swing.Spring)
メソッドの説明で示される式に従います。 最小値、推奨値および最大値が等しい場合、現在の値も常にこれらと等しくなります。このような柔軟性のないスプリングは、柱(strut)と呼ばれます。 ファクトリ・メソッドのSpring.constant(int)
を使用すると、柱を生成できます。 Spring
クラスには、別のスプリングに依存するスプリングなど、その他の種類のスプリングを作成するファクトリ・メソッドも用意されています。
SpringLayout
では、各エッジの位置は別の1つのエッジのみの位置に依存します。 制約を後で追加してエッジに新しいバインディングを作成すると、以前のバインディングは破棄され、エッジは1つのエッジのみに依存する状態のまま維持されます。 スプリングは、コンテナとその直接の子のエッジ間にのみ接続される必要があります。SpringLayout
の動作は、別のコンテナの内部または外部からコンポーネントのエッジに接続する制約によって表現される場合、定義されません。
SpringLayoutとその他のレイアウト・マネージャ
ノート: 多くのレイアウト・マネージャとは異なり、SpringLayout
は、管理するコンポーネントの位置を自動的に設定しません。SpringLayout
を使用するGUIをハンドコーディングする場合は、西/東および北/南の位置に制約を設定することによって、コンポーネントの位置を初期化してください。使用する制約によっては、コンテナのサイズを明示的に設定することが必要な場合もあります。
SpringLayout
は単純ですが、ほとんどのレイアウト・マネージャの動作をエミュレートできます。 FlowLayout
の行ブレークのような機能については、Spring
クラスに専用のサブクラスを作成する必要があります。
SpringLayout
を使用すると、Box
を入れ子にした組合わせでは解決できないような、レイアウトに関する難しい問題も多く解決できます。 SpringLayout
はLayoutManager2
規約を正確に遵守しているため、他のレイアウト・マネージャを入れ子にできます。これは、他のレイアウト・マネージャに含まれる制約を作成する方法よりも望ましい方法です。
SpringLayout
によるレイアウト・オペレーションの漸近的複雑性は、制約またはコンポーネント、あるいはその両方の数に比例します。
警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beans
パッケージに追加されました。 XMLEncoder
を参照してください。
- 導入されたバージョン:
- 1.4
- 関連項目:
-
ネストされたクラスのサマリー
修飾子と型クラス説明static class
Constraints
オブジェクトは、SpringLayout
が制御するコンテナ内のコンポーネントのサイズ変更方法および位置変更方法を決定する制約を保持します。 -
フィールドのサマリー
修飾子と型フィールド説明static final String
コンポーネントのベースラインを指定します。static final String
コンポーネントの境界の矩形の右端を指定します。static final String
コンポーネントの境界の矩形の高さを指定します。static final String
コンポーネントの境界の矩形の水平方向の中心を指定します。static final String
コンポーネントの境界の矩形の上端を指定します。static final String
コンポーネントの境界の矩形の下端を指定します。static final String
コンポーネントの境界の矩形の垂直方向の中心を指定します。static final String
コンポーネントの境界の矩形の左端を指定します。static final String
コンポーネントの境界の矩形の幅を指定します。 -
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明void
addLayoutComponent
(Component component, Object constraints) constraints
がSpringLayout.Constraints
のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。void
addLayoutComponent
(String name, Component c) このレイアウト・マネージャはコンポーネントごとの文字列を使用しないため、何もしません。getConstraint
(String edgeName, Component c) コンポーネントの指定されたエッジと親の上端または左端との間の距離を制御するスプリングを返します。指定されたコンポーネントの制約を返します。float
0.5f (中央揃え)を返します。float
0.5f (中央揃え)を返します。void
レイアウトを無効にします。このとき、レイアウト・マネージャが情報をキャッシュしていればそれを破棄します。void
layoutContainer
(Container parent) 指定されたコンテナを配置します。maximumLayoutSize
(Container parent) 指定されたコンテナにコンポーネントが含まれている場合の、最大サイズを計算します。minimumLayoutSize
(Container parent) 指定されたコンテナに含まれているコンポーネントを基に、コンテナの最小サイズを計算します。preferredLayoutSize
(Container parent) 指定されたコンテナに含まれているコンポーネントを基に、コンテナの推奨サイズを計算します。void
putConstraint
(String e1, Component c1, int pad, String e2, Component c2) コンポーネントc1
のエッジe1
をコンポーネントc2
のエッジe2
にリンクします。エッジ間の距離は固定です。void
コンポーネントc1
のエッジe1
をコンポーネントc2
のエッジe2
にリンクします。void
指定されたコンポーネントに関連付けれられた制約を削除します。
-
フィールド詳細
-
NORTH
public static final String NORTHコンポーネントの境界の矩形の上端を指定します。- 関連項目:
-
SOUTH
public static final String SOUTHコンポーネントの境界の矩形の下端を指定します。- 関連項目:
-
EAST
public static final String EASTコンポーネントの境界の矩形の右端を指定します。- 関連項目:
-
WEST
public static final String WESTコンポーネントの境界の矩形の左端を指定します。- 関連項目:
-
HORIZONTAL_CENTER
public static final String HORIZONTAL_CENTERコンポーネントの境界の矩形の水平方向の中心を指定します。- 導入されたバージョン:
- 1.6
- 関連項目:
-
VERTICAL_CENTER
public static final String VERTICAL_CENTERコンポーネントの境界の矩形の垂直方向の中心を指定します。- 導入されたバージョン:
- 1.6
- 関連項目:
-
BASELINE
public static final String BASELINEコンポーネントのベースラインを指定します。- 導入されたバージョン:
- 1.6
- 関連項目:
-
WIDTH
public static final String WIDTHコンポーネントの境界の矩形の幅を指定します。- 導入されたバージョン:
- 1.6
- 関連項目:
-
HEIGHT
public static final String HEIGHTコンポーネントの境界の矩形の高さを指定します。- 導入されたバージョン:
- 1.6
- 関連項目:
-
-
コンストラクタの詳細
-
SpringLayout
public SpringLayout()新しいSpringLayout
を構築します。
-
-
メソッドの詳細
-
addLayoutComponent
このレイアウト・マネージャはコンポーネントごとの文字列を使用しないため、何もしません。- 定義:
addLayoutComponent
、インタフェースLayoutManager
- パラメータ:
name
- コンポーネントに関連付けられる文字列c
- 追加されるコンポーネント
-
removeLayoutComponent
public void removeLayoutComponent(Component c) 指定されたコンポーネントに関連付けれられた制約を削除します。- 定義:
removeLayoutComponent
、インタフェースLayoutManager
- パラメータ:
c
- コンテナから削除されるコンポーネント
-
minimumLayoutSize
インタフェースからコピーされた説明:LayoutManager
指定されたコンテナに含まれているコンポーネントを基に、コンテナの最小サイズを計算します。- 定義:
minimumLayoutSize
、インタフェースLayoutManager
- パラメータ:
parent
- 配置されるコンポーネント- 戻り値:
- コンテナの最小ディメンション
- 関連項目:
-
preferredLayoutSize
インタフェースからコピーされた説明:LayoutManager
指定されたコンテナに含まれているコンポーネントを基に、コンテナの推奨サイズを計算します。- 定義:
preferredLayoutSize
、インタフェースLayoutManager
- パラメータ:
parent
- 配置されるコンテナ- 戻り値:
- コンテナの優先ディメンション
- 関連項目:
-
maximumLayoutSize
次のインタフェースからコピーされた説明:LayoutManager2
指定されたコンテナにコンポーネントが含まれている場合の、最大サイズを計算します。- 定義:
maximumLayoutSize
、インタフェースLayoutManager2
- パラメータ:
parent
- ターゲット・コンテナ- 戻り値:
- コンテナの最大サイズ
- 関連項目:
-
addLayoutComponent
constraints
がSpringLayout.Constraints
のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。- 定義:
addLayoutComponent
、インタフェースLayoutManager2
- パラメータ:
component
- 追加するコンポーネントconstraints
- コンポーネントの制約- 関連項目:
-
getLayoutAlignmentX
public float getLayoutAlignmentX(Container p) 0.5f (中央揃え)を返します。- 定義:
getLayoutAlignmentX
、インタフェースLayoutManager2
- パラメータ:
p
- ターゲット・コンテナ- 戻り値:
- x軸整列のプリファレンス
-
getLayoutAlignmentY
public float getLayoutAlignmentY(Container p) 0.5f (中央揃え)を返します。- 定義:
getLayoutAlignmentY
、インタフェースLayoutManager2
- パラメータ:
p
- ターゲット・コンテナ- 戻り値:
- y軸整列のプリファレンス
-
invalidateLayout
public void invalidateLayout(Container p) 次のインタフェースからコピーされた説明:LayoutManager2
レイアウトを無効にします。このとき、レイアウト・マネージャが情報をキャッシュしていればそれを破棄します。- 定義:
invalidateLayout
、インタフェースLayoutManager2
- パラメータ:
p
- ターゲット・コンテナ
-
putConstraint
コンポーネントc1
のエッジe1
をコンポーネントc2
のエッジe2
にリンクします。エッジ間の距離は固定です。 この制約により、代入value(e1, c1) = value(e2, c2) + pad
が後続のすべてのレイアウト・オペレーションで発生します。- パラメータ:
e1
- 依存するエッジc1
- 依存するコンポーネントpad
- 依存する側とされる側の間の固定距離e2
- 依存されるエッジc2
- 依存されるコンポーネント- 関連項目:
-
putConstraint
コンポーネントc1
のエッジe1
をコンポーネントc2
のエッジe2
にリンクします。 エッジ(e2, c2)
の値が変更されると、(e2, c2)
とs
の(スプリング)和をとることによってエッジ(e1, c1)
が計算されます。 各エッジに、SpringLayout.NORTH
、SpringLayout.SOUTH
、SpringLayout.EAST
、SpringLayout.WEST
、SpringLayout.VERTICAL_CENTER
、SpringLayout.HORIZONTAL_CENTER
またはSpringLayout.BASELINE
のいずれかの値が設定されている必要があります。- パラメータ:
e1
- 依存するエッジc1
- 依存するコンポーネントs
- 依存する側と依存される側を接続するスプリングe2
- 依存されるエッジc2
- 依存されるコンポーネント- 関連項目:
-
getConstraints
public SpringLayout.Constraints getConstraints(Component c) 指定されたコンポーネントの制約を返します。GridBagLayout
getConstraints
メソッドとは異なり、このメソッドは制約を複製しません。 コンポーネントに関連付けられた制約がない場合は、親のインセットに対して0,0の位置にあるデフォルトの制約オブジェクトを返します。幅と高さはコンポーネントの最小サイズ、最大サイズおよび推奨サイズに制約されます。 メソッドが呼び出された時点でサイズの特性は凍結されませんが、コンポーネントの特性が変更されるとそれを追跡する特性を持つ制約オブジェクトを返します。- パラメータ:
c
- 返される制約を持つコンポーネント- 戻り値:
- 指定されたコンポーネントの制約
-
getConstraint
コンポーネントの指定されたエッジと親の上端または左端との間の距離を制御するスプリングを返します。 このメソッドは、エッジに対する現在のバインディングを返すのではなく、エッジを後で再度バインドする場合にもエッジの特性を追跡するプロキシを返します。 プロキシは、構築環境での使用を目的としています。構築環境では、ユーザーが任意の順序でレイアウトの制約を定義できるようにすることが便利です。 ただし、プロキシは、レイアウトの制約間の循環的な依存関係を作成する手段を提供します。 そのようなサイクルは、レイアウト・オペレーションがいつでも終了できるように、SpringLayout
によって内部的に検出されます。- パラメータ:
edgeName
-SpringLayout.NORTH
、SpringLayout.SOUTH
、SpringLayout.EAST
、SpringLayout.WEST
、SpringLayout.VERTICAL_CENTER
、SpringLayout.HORIZONTAL_CENTER
またはSpringLayout.BASELINE
のいずれかc
- エッジ・スプリングを要求されるコンポーネント- 戻り値:
- 指定されたエッジからその親の上端または左端までの距離を制御するスプリングのプロキシ
- 関連項目:
-
layoutContainer
public void layoutContainer(Container parent) インタフェースからコピーされた説明:LayoutManager
指定されたコンテナを配置します。- 定義:
layoutContainer
、インタフェースLayoutManager
- パラメータ:
parent
- 配置されるコンテナ
-