JavaTM 2
Platform
Std. Ed. v1.4.0

javax.swing
クラス SpringLayout

java.lang.Object
  |
  +--javax.swing.SpringLayout
すべての実装インタフェース:
LayoutManager, LayoutManager2

public class SpringLayout
extends Object
implements LayoutManager2

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 の各サイズが設定されます。xy の位置は初期状態では制約が設定されていないため、Component の位置は、制約を設定するまで親 ContainerInsets に対して 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 は、管理するコンポーネントの位置を自動的に設定しません。SpringLayout を使用する GUI をハンドコーディングする場合は、west/east および north/south の位置に制約を設定することによって、コンポーネントの位置を初期化してください。

使用する制約によっては、コンテナのサイズを明示的に設定することが必要な場合もあります。


SpringLayout は単純ですが、ほとんどのレイアウトマネージャの動作をエミュレートできます。FlowLayout の行ブレークのような機能については、Spring クラスに専用のサブクラスを作成する必要があります。

SpringLayout を使用すると、Box を入れ子にした組み合わせでは解決できないような、レイアウトに関する難しい問題も多く解決できます。SpringLayoutLayoutManager2 規約を正確に遵守しているため、ほかのレイアウトマネージャを入れ子にできます。これは、ほかのレイアウトマネージャに含まれる制約を作成する方法よりも望ましい方法です。

SpringLayout によるレイアウトオペレーションの漸近的複雑性は、制約またはコンポーネント、あるいはその両方の数に比例します。

導入されたバージョン:
1.4
関連項目:
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)
          constraintsSpringLayout.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
 

フィールドの詳細

NORTH

public static final String NORTH
コンポーネントの境界の矩形の上端を指定します。

関連項目:
定数フィールド値

SOUTH

public static final String SOUTH
コンポーネントの境界の矩形の下端を指定します。

関連項目:
定数フィールド値

EAST

public static final String EAST
コンポーネントの境界の矩形の右端を指定します。

関連項目:
定数フィールド値

WEST

public static final String WEST
コンポーネントの境界の矩形の左端を指定します。

関連項目:
定数フィールド値
コンストラクタの詳細

SpringLayout

public SpringLayout()
新しい SpringLayout を構築します。

メソッドの詳細

addLayoutComponent

public void addLayoutComponent(String name,
                               Component c)
このレイアウトマネージャはコンポーネントごとの文字列を使用しないため、何もしません。

定義:
インタフェース LayoutManager 内の addLayoutComponent
パラメータ:
name - コンポーネントに関連付けられた文字列
c - 追加されるコンポーネント

removeLayoutComponent

public void removeLayoutComponent(Component c)
指定されたコンポーネントに関連付けれられた制約を削除します。

定義:
インタフェース LayoutManager 内の removeLayoutComponent
パラメータ:
c - コンテナから削除されるコンポーネント

minimumLayoutSize

public Dimension minimumLayoutSize(Container parent)
インタフェース LayoutManager の記述:
指定されたコンテナの最小サイズの寸法を計算します。含まれるコンポーネントは指定されます。

定義:
インタフェース LayoutManager 内の minimumLayoutSize
パラメータ:
parent - 配置されるコンポーネント
関連項目:
LayoutManager.preferredLayoutSize(java.awt.Container)

preferredLayoutSize

public Dimension preferredLayoutSize(Container parent)
インタフェース LayoutManager の記述:
指定されたコンテナの推奨サイズの寸法を計算します。含まれるコンポーネントは指定されます。

定義:
インタフェース LayoutManager 内の preferredLayoutSize
パラメータ:
parent - 配置されるコンテナ
関連項目:
LayoutManager.minimumLayoutSize(java.awt.Container)

maximumLayoutSize

public Dimension maximumLayoutSize(Container parent)
インタフェース LayoutManager2 の記述:
指定されたコンテナの最大サイズの寸法を計算します。含まれるコンポーネントは指定されます。

定義:
インタフェース LayoutManager2 内の maximumLayoutSize
関連項目:
Component.getMaximumSize(), LayoutManager

addLayoutComponent

public void addLayoutComponent(Component component,
                               Object constraints)
constraintsSpringLayout.Constraints のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。

定義:
インタフェース LayoutManager2 内の addLayoutComponent
パラメータ:
component - 追加するコンポーネント
constraints - コンポーネントの制約
関連項目:
SpringLayout.Constraints

getLayoutAlignmentX

public float getLayoutAlignmentX(Container p)
0.5f (中央揃え) を返します。

定義:
インタフェース LayoutManager2 内の getLayoutAlignmentX

getLayoutAlignmentY

public float getLayoutAlignmentY(Container p)
0.5f (中央揃え) を返します。

定義:
インタフェース LayoutManager2 内の getLayoutAlignmentY

invalidateLayout

public void invalidateLayout(Container p)
インタフェース LayoutManager2 の記述:
レイアウトを無効にします。このとき、レイアウトマネージャが情報をキャッシュしていればそれは破棄する必要があります。

定義:
インタフェース LayoutManager2 内の invalidateLayout

putConstraint

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)

putConstraint

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.NORTHSpringLayout.SOUTHSpringLayout.EASTSpringLayout.WEST のどれかの値を持つ必要があります。

パラメータ:
e1 - 依存するエッジ
c1 - 依存するコンポーネント
s - 依存する側と依存される側を接続するスプリング
e2 - 依存されるエッジ
c2 - 依存されるコンポーネント
関連項目:
putConstraint(String, Component, int, String, Component), NORTH, SOUTH, EAST, WEST

getConstraints

public SpringLayout.Constraints getConstraints(Component c)
指定されたコンポーネントの制約を返します。GridBagLayout getConstraints メソッドとは異なり、このメソッドは制約を複製しません。コンポーネントに関連付けられた制約がない場合は、親のインセットに対して 0,0 の位置にあるデフォルトの制約オブジェクトを返します。幅と高さはコンポーネントの minimum、maximum、および preferred の各サイズに制約されます。メソッドが呼び出された時点でサイズの特性は凍結されませんが、変更されたコンポーネントの特性を追跡する特性を持つ制約オブジェクトを返します。

パラメータ:
c - 返される制約を持つコンポーネント
戻り値:
指定されたコンポーネントの制約

getConstraint

public Spring getConstraint(String edgeName,
                            Component c)
コンポーネントの指定されたエッジと親の上端エッジまたは左エッジとの間の距離を制御するスプリングを返します。このメソッドは、エッジに対する現在のバインディングを返すのではなく、エッジを後で再度バインドする場合にもエッジの特性を追跡するプロキシを返します。プロキシは、構築環境での使用を目的としています。構築環境では、ユーザが任意の順序でレイアウトの制約を定義できるようにすることが便利です。ただし、プロキシは、レイアウトの制約間の循環的な依存性を作成する手段を提供します。そのようなサイクルは、レイアウトオペレーションがいつでも終了できるように、SpringLayout によって内部的に検出されます。

パラメータ:
edgeName - SpringLayout.NORTHSpringLayout.SOUTHSpringLayout.EASTSpringLayout.WEST のどれか
c - エッジスプリングを要求されるコンポーネント
戻り値:
指定されたエッジとその親の上端エッジまたは左エッジ間の距離を制御するスプリングに対するプロキシ
関連項目:
NORTH, SOUTH, EAST, WEST

layoutContainer

public void layoutContainer(Container parent)
インタフェース LayoutManager の記述:
指定されたコンテナを配置します。

定義:
インタフェース LayoutManager 内の layoutContainer
パラメータ:
parent - 配置されるコンテナ

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.