快速业务通道

Merlin的魔力: SpringLayout管理器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Merlin的魔力: SpringLayout管理器

时间:2011-02-02 IBM John Zukowski

在 Java 布局管理器方面,最新增加了 SpringLayout 管理器,它是与 Java 1.4 一起发布的。这种布局管理器允许您将“spring”附加到组件上,这样组件就可以相对于其他组件进行布局。例如,利用 SpringLayout 您可以让一个按钮依附于右边框来进行显示,而不管用户将屏幕宽度设为多大。

开始使用 SpringLayout

与所有布局管理器一样, SpringLayout 管理器负责安排组件的位置。组件的位置是通过为之提供相关联的约束来进行控制的。对于 SpringLayout 控制的组件,有一个带有 4 个设置值的约束 -- 每个设置值对应于组件的每条边。 SpringLayout 管理器依赖一个 SpringLayout.Constraints 对象来提供这些组件约束。这与 GridBagConstraints 类的工作原理有点类似, GridBagConstraints 类补充了 GridBagLayout 管理器:每个添加到容器中的组件都可以有一个依附在其上的 SpringLayout.Constraints 对象。不过,两者的相似之处仅此而已。

在使用 GridBagLayout的时候 ,您通常的做法是使用约束将组件添加到容器中。在使用 SpringLayout 管理器的情况下,您通常不必使用约束来添加组件。相反,您可以直接添加组件,然后再分别地为之附加约束。除了 SpringLayout 外,没有什么可以阻止您为组件添加约束 。Constraints 不是一个简单的类。它是 Spring 对象(用于每条边)的一个集合。当您使用 SpringLayout.Constraints 类时,您需要分别地将每个 Spring 约束添加到 SpringLayout.Constraints 。您是通过对组件的某一条边设置特定的约束来向 SpringLayout.Constraints “添加”约束的。通过使用 EAST 、 WEST 、 NORTH 和 SOUTH 这 4 个 SpringLayout 常量,您可以调用 SpringLayout.Constraints 的 setContraints(String edge, Spring spring) 方法,其中 String 类型的参数是 4 个常量中的一个。例如,如果您想将一个组件添加到一个容器的顶部偏左的位置,那么可以建立两个大小固定的 spring,将它们组合起来,然后将组件添加到带有这样组合而成的 spring 集的容器中,如清单 1 所示:

清单 1. 使用 SpringLayout

Component left = ...; SpringLayout layout = new SpringLayout(); JPanel panel = new JPanel(layout); Spring xPad = Spring.constant(5); Spring yPad = Spring.constant(25); SpringLayout.Constraints constraint = new SpringLayout.Constraints(); constraint.setConstraint(SpringLayout.WEST, xPad); constraint.setConstraint(SpringLayout.NORTH, yPad); contentPane.add(left, constraint);

这看上去不是特别难,但是当您需要添加下一个组件时,不管是添加到第一个组件的右边还是下面,事情都要更难办一些。您不能简单地在 n 像素外添加组件;实际上,您必需为早先的组件添加 padding(补白)。为了找出前一个组件的边,您可以使用 getConstraint() 方法请求布局管理器,为该方法传递您所针对的边和组件,例如 layout.getConstraint(SpringLayout.EAST, left) ,以此来获得第一个组件的正确的边的位置。从这个位置,您可以加进必需的 padding,并将其附加到其他组件的边上,如清单 2 所示:

清单 2. 使用 SpringLayout 添加第二个组件

Component right = ...; Spring rightSideOfLeft = layout.getConstraint(SpringLayout.EAST, left); Spring pad = Spring.constant(20); Spring leftEdgeOfRight = Spring.sum(rightSideOfLeft, pad); constraint = new SpringLayout.Constraints(); constraint.setConstraint(SpringLayout.WEST, leftEdgeOfRight); constraint.setConstraint(SpringLayout.NORTH,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号