箱式布局比较灵活,也比较实用。Swing提供的BOX类就是箱式布局类,它的默认布局管理器就是BoxLayout,在箱式布局管理器中包括两种箱子:一种是水平箱,另外一种是垂直箱。
创建一个水平箱的源代码如下:
创建一个垂直箱的源代码如下:
创建好箱子后,就可以像添加其他组件一样添加下面的控件,源代码如下:
两种箱子的区别在于组件的排列顺序,水平箱是按照从左到右的顺序排列,而垂直箱按照从上到下的顺序排列。对于箱式布局管理器而言,最关键的就是每个组件的3个尺寸。
l首选尺寸,即组件显示时的宽度和高度。
l最大尺寸,即组件能被显示的最大宽度和高度。
l最小尺寸,即组件被显示的最小高度和最小宽度。
下面是水平箱式布局管理器中组件排列的几个重点:
l计算最高组件的最大高度,尝试把所有的组件都增加到这个高度。如果有某些组件不能达到此高度,那么要在Y轴上对齐需要通过getAlignmentY方法实现,该方法返回一个介于0(按顶部对齐)和1(按底部对齐)之间的浮点数。组件的默认值是0.5,也就是中线对齐。
l得到每个组件的首选宽度,然后把所有的首选宽度合计起来。
l如果首选宽度总和小于箱的宽度,那么所有的组件都会相应的延伸,直到适应这个箱子的宽度。组件从左到右排列,并且相邻两个组件之间没有多余的空格。