SpringLayout布局管理器
SpringLayout布局器是通过定义组件边缘之间的距离来对组件在容器之中组件的布局进行管理而工作的。这样,当一个组件的位置确定后,另一个组件某个边缘的位置可以通过相对于该组件边缘距离来确定,用这种布局管理器的好处是可以在容器大小改变时,各个组件之间的距离不会改变。因为组件有几个不同方向上的边缘,因此对于一个组件来说,要具体确定自己的位置,还要知道自己的哪方向上的边是参照于另一个组件的哪一方向上的边,这样才能准确确定自己的位置。比如说你可以定义一个组件A的左边缘和另一个组件B的右边缘之间的距离是一个固定值s。这样我们知道会有两种情况,一是组件A在组件B的左边,二是组件A放在组件B的右边,并且它们的距离是固定值为s个像素。所以这样还是不够的,还需要组件A和组件B相对另外的组件之间的这种关系,比如说A的左边距容器的左边的距离是x, B的左边距离容器左边的距离为y,如果x<y,那么A就在B的左边。有时候A和B的位置还可能重叠。
通过上面的了解,我们初步知道了SpringLayout布局器的工作方式:SpringLayout布局管理器中,组件间边缘的位置是是通过彼此彼此间的距离决定的。当然了,具有SpringLayout布局的容器也要参与到这种关系之中。这种决定关系就是约束关系,这种约束关系可以形象地理解为绑定在这些具有这种关系的边之间。我们可以根据自己的需要定义人一边与边之间的这种关系,使这些组件在容器中有一个相对稳定的依托。这么一来为了使容器内的组件相对稳定,就要定义很多的这种关系。那么边与边之间的关系会不会像人类社会中人与人之间的那样复杂呢,答案是否定的。比如说,如果为了对某一个边缘重新创建一种新的绑定,那么后面加上去的这种约束会使前面定义的该边上的约束关系废弃掉,所以一条边只能与另一个组建的一条边建立一种依赖关系。
不像许多其他的布局管理器,SpringLayout布局管理器不能自动地确定它所包含组建的位置,因此当你使用SpringLayout布局管理器编写图形化界面程序的时候不要忘了对每一个包含的组件进行初始化,我们使用的方向是west、east、north 和south四个方向。
SpringLayout管理器依赖于它的助手类SpringLayout.Constraints进行组件约束。这类似于作为GridBagLayout管理器补充的GridBagConstraints类。添加到容器中的每一个组件都具有相关联的SpringLayout.Constraints。在这一点两种约束