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
、インタフェースLayoutManager
name
- コンポーネントに関連付けられる文字列c
- 追加されるコンポーネントpublic void removeLayoutComponent(Component c)
removeLayoutComponent
、インタフェースLayoutManager
c
- コンテナから削除されるコンポーネントpublic Dimension minimumLayoutSize(Container parent)
LayoutManager
minimumLayoutSize
、インタフェースLayoutManager
parent
- 配置されるコンポーネントLayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension preferredLayoutSize(Container parent)
LayoutManager
preferredLayoutSize
、インタフェースLayoutManager
parent
- 配置されるコンテナLayoutManager.minimumLayoutSize(java.awt.Container)
public Dimension maximumLayoutSize(Container parent)
LayoutManager2
maximumLayoutSize
、インタフェースLayoutManager2
Component.getMaximumSize()
, LayoutManager
public void addLayoutComponent(Component component, Object constraints)
constraints
がSpringLayout.Constraints
のインスタンスである場合は、指定されたコンポーネントに制約を関連付けます。
addLayoutComponent
、インタフェースLayoutManager2
component
- 追加するコンポーネントconstraints
- コンポーネントの制約SpringLayout.Constraints
public float getLayoutAlignmentX(Container p)
getLayoutAlignmentX
、インタフェースLayoutManager2
public float getLayoutAlignmentY(Container p)
getLayoutAlignmentY
、インタフェースLayoutManager2
public void invalidateLayout(Container p)
LayoutManager2
invalidateLayout
、インタフェースLayoutManager2
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
の(スプリング)和をとることによってエッジ(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
, BASELINE
public 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
, BASELINE
public void layoutContainer(Container parent)
LayoutManager
layoutContainer
、インタフェースLayoutManager
parent
- 配置されるコンテナ バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。