- 所有已实现的接口:
LayoutManager,LayoutManager2
SpringLayout 根据一组约束布置其关联容器的子级。有关使用 SpringLayout 的示例,请参阅 The Java Tutorial 中的 如何使用SpringLayout。
每个由 Spring 对象表示的约束控制两个组件边缘之间的垂直或水平距离。边可以属于容器的任何子容器,也可以属于容器本身。例如,可以使用控制组件西(左)边和东(右)边之间距离的约束来表示组件的允许宽度。组件允许的 y 坐标可以通过限制组件的北(上)边缘与其容器的北边缘之间的距离来表示。
SpringLayout 控制的容器的每个子容器,以及容器本身,都有一组与之关联的约束。这些约束由 SpringLayout.Constraints 对象表示。默认情况下,SpringLayout 创建约束,使其关联的组件具有组件的 Component.getMinimumSize() 、Component.getPreferredSize() 和 Component.getMaximumSize() 方法返回的最小、首选和最大大小。 x 和 y 位置最初不受约束,因此在您约束它们之前,Component 将位于相对于父级 Container 的 Insets 的 0,0 处。
您可以通过多种方式更改组件的约束。您可以使用其中一种 putConstraint 方法来建立连接同一容器内两个组件边缘的弹簧。或者您可以使用 getConstraints 获得适当的 SpringLayout.Constraints 对象,然后修改其一个或多个弹簧。或者您可以使用 getConstraint 获取组件特定边缘的弹簧,并对其进行修改。您还可以通过在将组件添加到其容器(使用 Container.add(Component, Object) )时指定约束对象,将您自己的 SpringLayout.Constraints 对象与组件相关联。
表示每个约束的 Spring 对象具有最小值、首选值、最大值和当前值。根据 Spring.sum(javax.swing.Spring, javax.swing.Spring) 方法描述中给出的公式,弹簧的当前值介于最小值和最大值之间。当最小值、首选值和最大值相同时,当前值始终等于它们;这个不灵活的弹簧叫做strut。您可以使用工厂方法 Spring.constant(int) 创建 struts。 Spring 类还提供了用于创建其他类型弹簧的工厂方法,包括依赖于其他弹簧的弹簧。
在 SpringLayout 中,每条边的位置仅取决于另一条边的位置。如果随后添加约束以创建边的新绑定,则先前的绑定将被丢弃并且该边仍然依赖于单个边。弹簧应该只连接在容器的边缘和它的直接孩子之间; SpringLayout 的行为在连接不同容器(内部或外部)组件边缘的约束条件下未定义。
SpringLayout 与其他布局管理器
Note: 与许多布局管理器不同,SpringLayout不会自动设置其管理的组件的位置。如果您手动编写使用SpringLayout的 GUI,请记住通过限制西/东和北/南位置来初始化组件位置。根据您使用的约束,您可能还需要明确设置容器的大小。
尽管 SpringLayout 很简单,但它可以模拟大多数其他布局管理器的行为。对于某些功能,例如 FlowLayout 提供的换行符,您需要创建 Spring 类的专用子类。
SpringLayout 还提供了一种方法来解决许多难以通过 Box es 的嵌套组合解决的布局问题。也就是说,SpringLayout 正确遵守 LayoutManager2 契约,因此可以与其他布局管理器嵌套——一种比创建其他布局管理器隐含的约束更可取的技术。
SpringLayout 布局操作的渐近复杂度与约束(和/或组件)的数量成线性关系。
Warning: 此类的序列化对象将与未来的 Swing 版本不兼容。当前的序列化支持适用于运行相同版本 Swing 的应用程序之间的短期存储或 RMI。从 1.4 开始,对所有 JavaBeans 的长期存储的支持已添加到 java.beans 包中。请参阅 XMLEncoder 。
- 自从:
- 1.4
- 参见:
-
内部类总结
内部类修饰符和类型类描述static classConstraints对象包含约束,这些约束控制组件大小和位置在SpringLayout控制的容器中的变化方式。 -
字段摘要
字段修饰符和类型Field描述static final String指定组件的基线。static final String指定组件边界矩形的右边缘。static final String指定组件边界矩形的高度。static final String指定组件边界矩形的水平中心。static final String指定组件边界矩形的上边缘。static final String指定组件边界矩形的底边。static final String指定组件边界矩形的垂直中心。static final String指定组件边界矩形的左边缘。static final String指定组件边界矩形的宽度。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidaddLayoutComponent(Component component, Object constraints) 如果constraints是SpringLayout.Constraints的实例,则将约束与指定组件相关联。voidaddLayoutComponent(String name, Component c) 没有效果,因为这个布局管理器不使用每个组件的字符串。getConstraint(String edgeName, Component c) 返回控制组件指定边缘与其父级上边缘或左边缘之间距离的弹簧。返回指定组件的约束。float返回 0.5f(居中)。float返回 0.5f(居中)。void使布局无效,表示如果布局管理器缓存了信息,则应将其丢弃。voidlayoutContainer(Container parent) 布置指定的容器。maximumLayoutSize(Container parent) 给定容器包含的组件,计算指定容器的最大尺寸。minimumLayoutSize(Container parent) 给定容器包含的组件,计算指定容器的最小尺寸。preferredLayoutSize(Container parent) 给定容器包含的组件,计算指定容器的首选尺寸。voidputConstraint(String e1, Component c1, int pad, String e2, Component c2) 将组件c1的边e1链接到组件c2的边e2,边之间的距离固定。void将组件c1的边e1链接到组件c2的边e2。void删除与指定组件关联的约束。
-
字段详细信息
-
NORTH
指定组件边界矩形的上边缘。- 参见:
-
SOUTH
指定组件边界矩形的底边。- 参见:
-
EAST
指定组件边界矩形的右边缘。- 参见:
-
WEST
指定组件边界矩形的左边缘。- 参见:
-
HORIZONTAL_CENTER
指定组件边界矩形的水平中心。- 自从:
- 1.6
- 参见:
-
VERTICAL_CENTER
指定组件边界矩形的垂直中心。- 自从:
- 1.6
- 参见:
-
BASELINE
指定组件的基线。- 自从:
- 1.6
- 参见:
-
WIDTH
指定组件边界矩形的宽度。- 自从:
- 1.6
- 参见:
-
HEIGHT
指定组件边界矩形的高度。- 自从:
- 1.6
- 参见:
-
-
构造方法详细信息
-
SpringLayout
public SpringLayout()构造一个新的SpringLayout.
-
-
方法详情
-
addLayoutComponent
没有效果,因为这个布局管理器不使用每个组件的字符串。- 指定者:
addLayoutComponent在接口LayoutManager中- 参数:
name- 要与组件关联的字符串c- 要添加的组件
-
removeLayoutComponent
删除与指定组件关联的约束。- 指定者:
removeLayoutComponent在接口LayoutManager中- 参数:
c- 从容器中移除的组件
-
minimumLayoutSize
从接口LayoutManager复制的描述给定容器包含的组件,计算指定容器的最小尺寸。- 指定者:
minimumLayoutSize在接口LayoutManager中- 参数:
parent- 要布局的组件- 返回:
- 容器的最小尺寸
- 参见:
-
preferredLayoutSize
从接口LayoutManager复制的描述给定容器包含的组件,计算指定容器的首选尺寸。- 指定者:
preferredLayoutSize在接口LayoutManager中- 参数:
parent- 要布置的容器- 返回:
- 容器的首选尺寸
- 参见:
-
maximumLayoutSize
从接口LayoutManager2复制的描述给定容器包含的组件,计算指定容器的最大尺寸。- 指定者:
maximumLayoutSize在接口LayoutManager2中- 参数:
parent- 目标容器- 返回:
- 容器的最大尺寸
- 参见:
-
addLayoutComponent
如果constraints是SpringLayout.Constraints的实例,则将约束与指定组件相关联。- 指定者:
addLayoutComponent在接口LayoutManager2中- 参数:
component- 正在添加的组件constraints- 组件的约束- 参见:
-
getLayoutAlignmentX
返回 0.5f(居中)。- 指定者:
getLayoutAlignmentX在接口LayoutManager2中- 参数:
p- 目标容器- 返回:
- x 轴对齐首选项
-
getLayoutAlignmentY
返回 0.5f(居中)。- 指定者:
getLayoutAlignmentY在接口LayoutManager2中- 参数:
p- 目标容器- 返回:
- y 轴对齐首选项
-
invalidateLayout
从接口LayoutManager2复制的描述使布局无效,表示如果布局管理器缓存了信息,则应将其丢弃。- 指定者:
invalidateLayout在接口LayoutManager2中- 参数:
p- 目标容器
-
putConstraint
将组件c1的边e1链接到组件c2的边e2,边之间的距离固定。此约束将导致分配value(e1, c1) = value(e2, c2) + pad
在所有后续布局操作期间发生。- 参数:
e1- 依赖的边缘c1- 依赖的组件pad- 依赖和锚点之间的固定距离e2- 锚的边缘c2- 锚的组成部分- 参见:
-
putConstraint
将组件c1的边e1链接到组件c2的边e2。随着 edge(e2, c2)值的改变,edge(e1, c1)将通过(e2, c2)和s的(弹簧)总和来计算。每条边必须具有以下值之一:SpringLayout.NORTH、SpringLayout.SOUTH、SpringLayout.EAST、SpringLayout.WEST、SpringLayout.VERTICAL_CENTER、SpringLayout.HORIZONTAL_CENTER或SpringLayout.BASELINE。- 参数:
e1- 依赖的边缘c1- 依赖的组件s- 连接依赖和锚点的弹簧e2- 锚的边缘c2- 锚的组成部分- 参见:
-
getConstraints
返回指定组件的约束。请注意,与GridBagLayoutgetConstraints方法不同,此方法不会克隆约束。如果没有约束与此组件相关联,则此方法返回一个默认约束对象,该对象位于相对于父级 Insets 的 0,0 处,并且其宽度/高度被限制为组件的最小、最大和首选大小。调用此方法时尺寸特征未冻结;相反,此方法返回一个约束对象,其特征在组件变化时跟踪组件的特征。- 参数:
c- 将返回其约束的组件- 返回:
- 指定组件的约束
-
getConstraint
返回控制组件指定边缘与其父级上边缘或左边缘之间距离的弹簧。此方法不是返回边缘的当前绑定,而是返回一个跟踪边缘特征的代理,即使边缘随后被反弹也是如此。代理旨在用于允许用户以任何顺序定义布局约束的构建器环境。然而,代理确实提供了在布局约束之间创建循环依赖关系的方法。SpringLayout在内部检测到此类循环,以便布局操作始终终止。- 参数:
edgeName- 必须是SpringLayout.NORTH、SpringLayout.SOUTH、SpringLayout.EAST、SpringLayout.WEST、SpringLayout.VERTICAL_CENTER、SpringLayout.HORIZONTAL_CENTER或SpringLayout.BASELINE之一c- 需要边缘弹簧的组件- 返回:
- 弹簧的代理,控制指定边与其父级的上边缘或左边缘之间的距离
- 参见:
-
layoutContainer
从接口LayoutManager复制的描述布置指定的容器。- 指定者:
layoutContainer在接口LayoutManager中- 参数:
parent- 要布置的容器
-