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