|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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
对象表示的约束控制着两个组件边之间的垂直距离或水平距离。这两个边属于容器的任一子级,或属于该容器本身。例如,可以使用控制某组件东(右)和西(左)边之间距离的约束表示该组件允许的宽度。某个组件所允许的 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
不自动设置它管理的组件的位置。如果手工编写一个使用SpringLayout
的 GUI,则要记住通过约束东/西和南/北的位置初始化组件的位置。可能还需要明确设置容器的大小,具体取决于您使用的约束。
尽管 SpringLayout
简单易用,但它还要仿效其他多数布局管理器的行为。对于某些功能(如 FlowLayout
提供的行断开),需要创建一个 Spring
类的专用子类。
SpringLayout
还提供解决许多困难布局问题的方法,这些问题都不能通过嵌套 Box
的组合来解决。也就是说,SpringLayout
完全遵守 LayoutManager2
协定,因此可以使用其他布局管理器进行嵌套(一种创建其他布局管理器使用的约束的更好技术)。
SpringLayout
布局操作的渐进复杂性与约束(和/或组件)的数量呈线关系。
警告:此类的序列化对象将与以后的 Swing 版本不兼容。当前的序列化支持适用于短期存储或运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
- 从以下版本开始:
- 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) 如果 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 |
字段详细信息 |
---|
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
- 将从容器中移除的组件