public class SpringLayout extends Object implements 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を使用するGUIをハンドコーディングする場合は、西/東および北/南の位置に制約を設定することによって、コンポーネントの位置を初期化してください。使用する制約によっては、コンテナのサイズを明示的に設定することが必要な場合もあります。
SpringLayoutは単純ですが、ほとんどのレイアウト・マネージャの動作をエミュレートできます。 FlowLayoutの行ブレークのような機能については、Springクラスに専用のサブクラスを作成する必要があります。
SpringLayoutを使用すると、Boxを入れ子にした組合わせでは解決できないような、レイアウトに関する難しい問題も多く解決できます。 SpringLayoutはLayoutManager2規約を正確に遵守しているため、他のレイアウト・マネージャを入れ子にできます。これは、他のレイアウト・マネージャに含まれる制約を作成する方法よりも望ましい方法です。
SpringLayoutによるレイアウト・オペレーションの漸近的複雑性は、制約またはコンポーネント、あるいはその両方の数に比例します。
警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。
Spring, SpringLayout.Constraints| 修飾子と型 | クラス | 説明 |
|---|---|---|
static class |
SpringLayout.Constraints |
Constraintsオブジェクトは、SpringLayoutが制御するコンテナ内のコンポーネントのサイズ変更方法および位置変更方法を決定する制約を保持します。 |
| 修飾子と型 | フィールド | 説明 |
|---|---|---|
static String |
BASELINE |
コンポーネントのベースラインを指定します。
|
static String |
EAST |
コンポーネントの境界の矩形の右端を指定します。
|
static String |
HEIGHT |
コンポーネントの境界の矩形の高さを指定します。
|
static String |
HORIZONTAL_CENTER |
コンポーネントの境界の矩形の水平方向の中心を指定します。
|
static String |
NORTH |
コンポーネントの境界の矩形の上端を指定します。
|
static String |
SOUTH |
コンポーネントの境界の矩形の下端を指定します。
|
static String |
VERTICAL_CENTER |
コンポーネントの境界の矩形の垂直方向の中心を指定します。
|
static String |
WEST |
コンポーネントの境界の矩形の左端を指定します。
|
static String |
WIDTH |
コンポーネントの境界の矩形の幅を指定します。
|
| コンストラクタ | 説明 |
|---|---|
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) |
指定されたコンポーネントに関連付けれられた制約を削除します。
|
public static final String HORIZONTAL_CENTER
public static final String VERTICAL_CENTER
public void addLayoutComponent(String name, Component c)
addLayoutComponent、インタフェースLayoutManagername - コンポーネントに関連付けられる文字列c - 追加されるコンポーネントpublic void removeLayoutComponent(Component c)
removeLayoutComponent、インタフェースLayoutManagerc - コンテナから削除されるコンポーネントpublic Dimension minimumLayoutSize(Container parent)
LayoutManagerminimumLayoutSize、インタフェースLayoutManagerparent - 配置されるコンポーネントLayoutManager.preferredLayoutSize(java.awt.Container)public Dimension preferredLayoutSize(Container parent)
LayoutManagerpreferredLayoutSize、インタフェースLayoutManagerparent - 配置されるコンテナLayoutManager.minimumLayoutSize(java.awt.Container)public Dimension maximumLayoutSize(Container parent)
LayoutManager2maximumLayoutSize、インタフェースLayoutManager2Component.getMaximumSize(), LayoutManagerpublic void addLayoutComponent(Component component, Object constraints)
constraintsがSpringLayout.Constraintsのインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。
addLayoutComponent、インタフェースLayoutManager2component - 追加するコンポーネントconstraints - コンポーネントの制約SpringLayout.Constraintspublic float getLayoutAlignmentX(Container p)
getLayoutAlignmentX、インタフェースLayoutManager2public float getLayoutAlignmentY(Container p)
getLayoutAlignmentY、インタフェースLayoutManager2public void invalidateLayout(Container p)
LayoutManager2invalidateLayout、インタフェースLayoutManager2public 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の(スプリング)和をとることによってエッジ(e1, c1)が計算されます。 各エッジに、SpringLayout.NORTH、SpringLayout.SOUTH、SpringLayout.EAST、SpringLayout.WEST、SpringLayout.VERTICAL_CENTER、SpringLayout.HORIZONTAL_CENTERまたはSpringLayout.BASELINEのいずれかの値が設定されている必要があります。
e1 - 依存するエッジc1 - 依存するコンポーネントs - 依存する側と依存される側を接続するスプリングe2 - 依存されるエッジc2 - 依存されるコンポーネントputConstraint(String, Component, int, String, Component), NORTH, SOUTH, EAST, WEST, VERTICAL_CENTER, HORIZONTAL_CENTER, BASELINEpublic SpringLayout.Constraints getConstraints(Component c)
GridBagLayout getConstraintsメソッドとは異なり、このメソッドは制約を複製しません。 コンポーネントに関連付けられた制約がない場合は、親のインセットに対して0,0の位置にあるデフォルトの制約オブジェクトを返します。幅と高さはコンポーネントの最小サイズ、最大サイズおよび推奨サイズに制約されます。 メソッドが呼び出された時点でサイズの特性は凍結されませんが、コンポーネントの特性が変更されるとそれを追跡する特性を持つ制約オブジェクトを返します。 c - 返される制約を持つコンポーネントpublic Spring getConstraint(String edgeName, Component c)
SpringLayoutによって内部的に検出されます。 edgeName - SpringLayout.NORTH、SpringLayout.SOUTH、SpringLayout.EAST、SpringLayout.WEST、SpringLayout.VERTICAL_CENTER、SpringLayout.HORIZONTAL_CENTERまたはSpringLayout.BASELINEのいずれかc - エッジ・スプリングを要求されるコンポーネントNORTH, SOUTH, EAST, WEST, VERTICAL_CENTER, HORIZONTAL_CENTER, BASELINEpublic void layoutContainer(Container parent)
LayoutManagerlayoutContainer、インタフェースLayoutManagerparent - 配置されるコンテナ バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。