|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.swing.SpringLayout
public class SpringLayout
SpringLayout
根據一組約束佈置其相關容器的子元件。有關使用 SpringLayout
的範例,請參閱 The Java Tutorial 中的 How to Use SpringLayout 一節。
每個由 Spring
物件表示的約束控制著兩個元件邊之間的垂直距離或水平距離。這兩個邊屬於容器的任一子級,或屬於該容器本身。例如,可以使用控制某元件東(右)和西(左)邊之間距離的約束表示該元件允許的寬度。某個元件所允許的 y 坐標可以通過約束該元件北(上)邊和其容器的北邊之間的距離表示。
SpringLayout
控制的容器的每個子級及其容器本身都有一組與其相關的約束。這些約束由一個 SpringLayout.Constraints
物件表示。預設情況下,SpringLayout
創建使其相關元件具有最小、首選和最大大小的約束,這幾項大小都由該元件的 Component.getMinimumSize()
、Component.getPreferredSize()
和 Component.getMaximumSize()
方法返回。x 和 y 的位置最初不受約束,以便在約束它們之前將該 Component
定位在對應於父 Container
的 Insets
的(0,0)位置。
有好幾種可以更改元件約束的方式。可以使用某個 putConstraint
方法建立一個連接同一個容器內兩個元件邊的 spring。或者使用 getConstraints
獲取適當 SpringLayout.Constraints
,然後修改其中一個或多個 spring。或者使用 getConstraint
獲取某個元件特定邊的 spring,並修改它。還可以在將某個元件添加到其容器(使用 Container.add(Component, Object)
)時,通過指定自己的 SpringLayout.Constraints
物件,將該約束對象與該元件相關聯。
表示每項約束的 Spring
物件都有最小、首選、最大和當前值。按照 Spring.sum(javax.swing.Spring, javax.swing.Spring)
方法描述中給定的公式,該 spring 的當前值介於最小值和最大值之間的某個位置。當最小、首選和最大值相同時,當前值始終與它們相等;此不靈活的 spring 被稱作 strut。可以使用處理器方法 Spring.constant(int)
創建 strut。該 Spring
類別還提供處理器方法,用於創建其他種類別的 spring,包括依賴其他 spring 的 spring。
在 SpringLayout
中,每個邊的位置只與其他一個邊的位置有關。如果隨後添加一個約束來創建某個邊的新綁定,則以前的綁定會被丟棄,且該邊保持與某單個邊相關。Spring 只應在容器的兩個邊及其直接子級之間連接;當出現連接到不同容器(內部或外部)中元件邊緣的約束時,該 SpringLayout
的行為是不確定的。
註:與多數佈局管理器不同,SpringLayout
不自動設置它管理的元件的位置。如果手工編寫一個使用SpringLayout
的 GUI,則要記住通過約束東/西和南/北的位置初始化元件的位置。可能還需要明確設置容器的大小,具體取決於您使用的約束。
儘管 SpringLayout
簡單易用,但它還要倣傚其他多數佈局管理器的行為。對於某些功能(如 FlowLayout
提供的行斷開),需要創建一個 Spring
類別的專用子類別。
SpringLayout
還提供解決許多困難佈局問題的方法,這些問題都不能通過巢狀 Box
的組合來解決。也就是說,SpringLayout
完全遵守 LayoutManager2
協定,因此可以使用其他佈局管理器進行巢狀(一種創建其他佈局管理器使用的約束的更好技術)。
SpringLayout
佈局操作的漸進複雜性與約束(和/或元件)的數量呈線關係。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 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)
返回控制該元件指定邊及其父級的頂邊或左邊之間距離的 spring。 |
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 |
欄位詳細資訊 |
---|
public static final String NORTH
public static final String SOUTH
public static final String EAST
public static final String WEST
public static final String HORIZONTAL_CENTER
public static final String VERTICAL_CENTER
public static final String BASELINE
public static final String WIDTH
public static final String HEIGHT
建構子詳細資訊 |
---|
public SpringLayout()
SpringLayout
。
方法詳細資訊 |
---|
public void addLayoutComponent(String name, Component c)
LayoutManager
中的 addLayoutComponent
name
- 要與元件關聯的字元串c
- 要添加的元件public void removeLayoutComponent(Component c)
LayoutManager
中的 removeLayoutComponent
c
- 將從容器中移除的元件public Dimension minimumLayoutSize(Container parent)
LayoutManager
複製的描述
LayoutManager
中的 minimumLayoutSize
parent
- 要佈置的元件public Dimension preferredLayoutSize(Container parent)
LayoutManager
複製的描述
LayoutManager
中的 preferredLayoutSize
parent
- 要佈置的容器LayoutManager.minimumLayoutSize(java.awt.Container)
public Dimension maximumLayoutSize(Container parent)
LayoutManager2
複製的描述
LayoutManager2
中的 maximumLayoutSize
Component.getMaximumSize()
,
LayoutManager
public void addLayoutComponent(Component component, Object constraints)
constraints
是 SpringLayout.Constraints
的一個實例,則將該約束與指定元件相關聯。
LayoutManager2
中的 addLayoutComponent
component
- 正添加的元件constraints
- 該元件的約束SpringLayout.Constraints
public float getLayoutAlignmentX(Container p)
LayoutManager2
中的 getLayoutAlignmentX
public float getLayoutAlignmentY(Container p)
LayoutManager2
中的 getLayoutAlignmentY
public void invalidateLayout(Container p)
LayoutManager2
複製的描述
LayoutManager2
中的 invalidateLayout
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
- 該 dependent 的邊c1
- 該 dependent 的元件pad
- dependent 和 anchor 之間的固定距離e2
- 該 anchor 的邊c2
- 該 anchor 的元件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)
會使值發生變化,所以邊 (e1, c1)
將使用 (e2, c2)
加 s
的 (spring) 總和計算。每個邊必須具有以下某個值:SpringLayout.NORTH
、SpringLayout.SOUTH
、SpringLayout.EAST
、SpringLayout.WEST
、SpringLayout.VERTICAL_CENTER
、SpringLayout.HORIZONTAL_CENTER
或
SpringLayout.BASELINE
。
e1
- 該 dependent 的邊c1
- 該 dependent 的元件s
- 連接 dependent 和 anchor 的 springe2
- 該 anchor 的邊c2
- 該 anchor 的元件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 的預設約束物件,此位置相對於父級的 Insets 及其受該元件的最小、最大和首選大小約束的寬度/高度。該大小特徵不會在調用此方法時凍結;相反,此方法會返回一個約束物件,其特徵會隨著該元件特徵的更改而進行追蹤。
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
- 需要其邊緣 spring 的元件
NORTH
,
SOUTH
,
EAST
,
WEST
,
VERTICAL_CENTER
,
HORIZONTAL_CENTER
,
BASELINE
public void layoutContainer(Container parent)
LayoutManager
複製的描述
LayoutManager
中的 layoutContainer
parent
- 要佈置的容器
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。