Merlin的魔力: SpringLayout管理器[Java编程]
本文“Merlin的魔力: SpringLayout管理器[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在 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, yPad);
contentPane.add(right, constraint);
通过 SpringLayout 利用 putConstraint()
这种办法非常有效,但是假如组件的数目多起来的话,这种办法就显得单调乏味了.相反,另一种躲避中间步骤的办法是先不带约束地直接增添组件,然后再辨别地增添约束,利用 SpringLayout 的 putConstraint() 办法将约束衔接到组件,如清单 3 所示:
清单 3. 用 SpringLayout 增添第二个组件
public void putConstraint(String e1, Component c1, int pad,
String e2, Component c2)
public void putConstraint(String e1, Component c1, Spring s,
String e2, Component c2)
以上是“Merlin的魔力: SpringLayout管理器[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |