22.10.2 网格组布局的设计
布局管理器是一种很先进的布局管理器,通过网格的划分,可看到每个组件都占据一个网格,也可以一个组件占据几个网格。如果要采用网格组布局管理器,一般来说可以采用下列步骤:
(1)创建一个GridBagLayout对象。
(2)将容器设成此对象的布局管理器。
(3)创建约束(GridBagConstraints)对象。
(4)创建各个相应的组件。
(5)添加各个组件与约束到网格组布局管理器中。
网络组由多个网格组成,而且各个行或者列的长度和宽度不同。但默认的情况下,单元格从左上角开始有序列的编号,从第0行第0列开始计数。
当向网格组布局管理器中添加组件时,分别定义每个单元格的序列号,只要设定相应的值,那么组件就会添加到网格组布局管理器中。gridX、gridY分别定义了添加组件时左上角的行与列位置,而gridwidth、gridheight分别定义了组件所占用的列数和行数。
网格组布局管理器中每个区域都要设置增量字段(weightx与weighty,分别代表x方向和y方向的增量)。如果想让某个区域保持初始化的大小,也就是说窗口缩放不会引起组件缩放,那就应该设置该区域的增量为0,相反如果让组件能完全保证填充单元格,那增量字段就应该设置为100。
fill和anchor参数都是非常重要的约束,其中fill是当组件不能填满单元格时,该参数就可以发挥作用。该约束的值主要有以下几种。
❑GridBagConstraints.NONE:在每一个方向都不填充,即保持原状。
❑GridBagConstraints.HORIZONTAL:只在水平方向上填充。
❑GridBagConstraints.VERTICAL:只在垂直方向上填充。
❑GridBagConstraints.BOTH:在两个方向上都填充。
而anchor参数则是当一个组件大于分配给它的单元格时发挥作用。该约束就是约定如何处理该组件,它的值如下所示。
❑GridBagConstraints.CENTER:居中缩小。
❑GridBagConstraints.NORTH:顶部缩小。
❑GridBagConstraints.NORTHEAST:左上角缩小。
❑GridBagConstraints.EAST:右侧缩小。