- すべての実装されたインタフェース:
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 classConstraintsオブジェクトは、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コンポーネントの境界の矩形の幅を指定します。 -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明voidaddLayoutComponent(Component component, Object constraints) constraintsがSpringLayout.Constraintsのインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。voidaddLayoutComponent(String name, Component c) このレイアウト・マネージャはコンポーネントごとの文字列を使用しないため、何もしません。getConstraint(String edgeName, Component c) コンポーネントの指定されたエッジと親の上端または左端との間の距離を制御するスプリングを返します。指定されたコンポーネントの制約を返します。float0.5f (中央揃え)を返します。float0.5f (中央揃え)を返します。voidレイアウトを無効にします。このとき、レイアウト・マネージャが情報をキャッシュしていればそれを破棄します。voidlayoutContainer(Container parent) 指定されたコンテナを配置します。maximumLayoutSize(Container parent) 指定されたコンテナにコンポーネントが含まれている場合の、最大サイズを計算します。minimumLayoutSize(Container parent) 指定されたコンテナに含まれているコンポーネントを基に、コンテナの最小サイズを計算します。preferredLayoutSize(Container parent) 指定されたコンテナに含まれているコンポーネントを基に、コンテナの推奨サイズを計算します。voidputConstraint(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) 指定されたコンポーネントの制約を返します。GridBagLayoutgetConstraintsメソッドとは異なり、このメソッドは制約を複製しません。 コンポーネントに関連付けられた制約がない場合は、親のインセットに対して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- 配置されるコンテナ
-