- java.lang.Object
-
- javax.swing.SpringLayout
-
- 实现的所有接口
-
LayoutManager,LayoutManager2
public class SpringLayout extends Object implements LayoutManager2
SpringLayout根据一组约束条件列出其相关容器的子项。 见How to Use SpringLayout在Java教程使用的例子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获取组件特定边缘的弹簧,并对其进行修改。 通过在将组件添加到其容器时指定约束对象,您还可以将自己的SpringLayout.Constraints对象与组件关联(使用Container.add(Component, Object))。表示每个约束的
Spring对象具有最小值,首选值,最大值和当前值。 根据Spring.sum(javax.swing.Spring, javax.swing.Spring)方法描述中给出的公式,弹簧的当前值介于最小值和最大值之间。 当最小值,首选值和最大值相同时,当前值总是等于它们; 这种不灵活的弹簧称为支柱 。 您可以使用工厂方法Spring.constant(int)创建支柱。Spring类还提供了用于创建其他类型弹簧的工厂方法,包括依赖于其他弹簧的弹簧。在
SpringLayout,每条边的位置取决于另一条边的位置。 如果随后添加约束以为边创建新绑定,则先前的绑定将被丢弃,并且边仍然依赖于单个边。 弹簧应仅安装在容器边缘及其直接儿童之间;SpringLayout在显示链接来自不同容器(内部或外部)的组件边缘的约束时的行为未定义。SpringLayout与其他布局管理器
Note: Unlike many layout managers,SpringLayoutdoesn't automatically set the location of the components it manages. If you hand-code a GUI that usesSpringLayout, remember to initialize component locations by constraining the west/east and north/south locations.Depending on the constraints you use, you may also need to set the size of the container explicitly.
尽管
SpringLayout很简单,但它可以模拟大多数其他布局管理器的行为。 对于某些功能,例如FlowLayout提供的FlowLayout,您需要创建Spring类的特殊用途子类。SpringLayout还提供了一种解决许多难以解决的布局问题的方法,这些问题无法通过嵌套Boxes的组合来解决。 也就是说,SpringLayout正确地尊重了LayoutManager2合同,因此可以与其他布局管理器嵌套 - 这种技术可以优先于创建其他布局管理器隐含的约束。SpringLayout的布局操作的渐近复杂度在约束(和/或组件)的数量上是线性的。警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始,
java.beans软件包中添加了对所有JavaBeansjava.beans长期存储的支持。 请参阅XMLEncoder。- 从以下版本开始:
- 1.4
- 另请参见:
-
Spring,SpringLayout.Constraints
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static classSpringLayout.ConstraintsConstraints对象包含约束,这些约束控制组件的大小和位置在由SpringLayout控制的容器中的SpringLayout。
-
字段汇总
字段 变量和类型 字段 描述 static StringBASELINE指定组件的基线。static StringEAST指定组件边界矩形的右边缘。static StringHEIGHT指定组件边界矩形的高度。static StringHORIZONTAL_CENTER指定组件边界矩形的水平中心。static StringNORTH指定组件边界矩形的上边缘。static StringSOUTH指定组件边界矩形的下边缘。static StringVERTICAL_CENTER指定组件边界矩形的垂直中心。static StringWEST指定组件边界矩形的左边缘。static StringWIDTH指定组件边界矩形的宽度。
-
构造方法摘要
构造方法 构造器 描述 SpringLayout()构造一个新的SpringLayout。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 voidaddLayoutComponent(Component component, Object constraints)如果constraints是constraints的实例,SpringLayout.Constraints约束与指定的组件相关联。voidaddLayoutComponent(String name, Component c)没有效果,因为此布局管理器不使用每个组件的字符串。SpringgetConstraint(String edgeName, Component c)返回控制组件指定边缘与其父级顶部或左侧边缘之间距离的弹簧。SpringLayout.ConstraintsgetConstraints(Component c)返回指定组件的约束。floatgetLayoutAlignmentX(Container p)返回0.5f(居中)。floatgetLayoutAlignmentY(Container p)返回0.5f(居中)。voidputConstraint(String e1, Component c1, int pad, String e2, Component c2)链接边缘e1组分c1到边缘e2成分的c2,边与边之间的距离固定。voidputConstraint(String e1, Component c1, Spring s, String e2, Component c2)链接边缘e1组分c1到边缘e2组分c2。voidremoveLayoutComponent(Component c)删除与指定组件关联的约束。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 java.awt.LayoutManager
layoutContainer, minimumLayoutSize, preferredLayoutSize
-
声明方法的接口 java.awt.LayoutManager2
invalidateLayout, maximumLayoutSize
-
-
-
-
方法详细信息
-
addLayoutComponent
public void addLayoutComponent(String name, Component c)
没有效果,因为此布局管理器不使用每个组件的字符串。- Specified by:
-
addLayoutComponent在界面LayoutManager - 参数
-
name- 与组件关联的字符串 -
c- 要添加的组件
-
removeLayoutComponent
public void removeLayoutComponent(Component c)
删除与指定组件关联的约束。- Specified by:
-
removeLayoutComponent在界面LayoutManager - 参数
-
c- 从容器中删除的组件
-
addLayoutComponent
public void addLayoutComponent(Component component, Object constraints)
如果constraints是constraints的实例,SpringLayout.Constraints约束与指定的组件相关联。- Specified by:
-
addLayoutComponent在界面LayoutManager2 - 参数
-
component- 正在添加的组件 -
constraints- 组件的约束 - 另请参见:
-
SpringLayout.Constraints
-
getLayoutAlignmentX
public float getLayoutAlignmentX(Container p)
返回0.5f(居中)。- Specified by:
-
getLayoutAlignmentX在界面LayoutManager2 - 参数
-
p- 目标容器 - 结果
- x轴对齐偏好
-
getLayoutAlignmentY
public float getLayoutAlignmentY(Container p)
返回0.5f(居中)。- Specified by:
-
getLayoutAlignmentY接口LayoutManager2 - 参数
-
p- 目标容器 - 结果
- y轴对齐偏好
-
putConstraint
public void putConstraint(String e1, Component c1, int pad, String e2, Component c2)
链接边缘e1组分c1到边缘e2成分的c2,边与边之间的距离固定。 此约束将导致分配value(e1, c1) = value(e2, c2) + pad在所有后续布局操作中进行。- 参数
-
e1- 依赖的边缘 -
c1- 从属组件 -
pad- 从属和锚之间的固定距离 -
e2- 锚点的边缘 -
c2- 锚点的组件 - 另请参见:
-
putConstraint(String, Component, Spring, String, Component)
-
putConstraint
public void putConstraint(String e1, Component c1, Spring s, String e2, Component c2)
链接边缘e1组分c1到边缘e2组分c2。 为边缘(e2, c2)变化值,边缘(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- 锚点的组件 - 另请参见:
-
putConstraint(String, Component, int, String, Component),NORTH,SOUTH,EAST,WEST,VERTICAL_CENTER,HORIZONTAL_CENTER,BASELINE
-
getConstraints
public SpringLayout.Constraints getConstraints(Component c)
返回指定组件的约束。 请注意,与GridBagLayoutgetConstraints方法不同,此方法不会克隆约束。 如果没有与此组件关联的约束,则此方法返回默认约束对象,该对象相对于父级的Insets位于0,0,并且其宽度/高度约束为组件的最小,最大和首选大小。 调用此方法时,大小特征不会冻结; 相反,此方法返回一个约束对象,其特征跟踪组件更改时的特征。- 参数
-
c- 将返回其约束的组件 - 结果
- 指定组件的约束
-
getConstraint
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
-
-