JAVA网格组布局管理器

由GridBagLayout类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。

在向GridBagLayout类管理的容器中添加组件时,需要为每个组件创建一个与之关联的GridBagConstraints类的对象,通过该类中的属性可以设置组件的布局信息,如组件在网格组中位于第几行、第几列,以及需要占用几行几列等。

通过GridBagLayout类实现的矩形网格的绘制方向由容器决定,如果容器的方向是从左到右,则位于矩形网格左上角的单元格的索引列为0,此时组件左上角的点为起始点;如果容器的方向是从右到左,则位于矩形网格右上角的单元格的列索引为0,此时组件右上角的点为起始点。

(1)gridx和gridy属性
这两个属性用来设置组件起始点所在单元格的索引值。属性gridx设置的是X轴(即网格水平方向)的索引值,所以它表示的是组件起始点所在列的索引;属性gridy设置的是Y轴(即网格垂直方向)的索引值,所以它表示组件起始点所在行的索引。

(2)gridwidth和gridheight属性
这两个属性用来设置组件占用网格组的行数和列数。属性gridwidth为组件占用网格组的列数,也可以理解为以单元格为单位组件的宽度;属性gridheight为组件占用网格组的行数,也可以理解为以单元格为单位组件的高度。

(3)anchor属性
属性anchor用来设置组件在其所在显示区域的显示位置。通常将显示区域从方向上划分为9个方位,分别为北方(NORTH)、东北(NORTHEAST)、东方(EAST)、东南(SOUTHEAST)、南方(SOUTH)、西南(SOUTHWEST)、西方(WEST)、西北(NORTHWEST)和中心(CENTER),代表这9个方位的单词也是该类中的静态常量,可以利用这9个静态常量设置anchor属性,其中静态常量CENTER为默认位置。

(4)fill属性
属性fill用来设置组件的填充方式。当单元格显示区域的面积大于组件面积,或者一个组件占用多个单元格时,显示组件可能不必占用所有显示区域,在这种情况下可以通过fill属性设置组件的填充方式。可以利用4个静态常量设置该属性,默认情况下将该属性设置为静态常量NONE,即不调整组件大小至填满显示区域;如果将该属性设置为静态常量HORIZONTAL,表示只调整组件水平方向的大小(即组件宽度)至填满显示区域;如果将该属性设置为静态常量VERTICAL,表示只调整组件垂直方向的大小(即组件高度)至填满显示区域;如果将该属性设置为静态常量BOTH,则表示同时调整组件的宽度和高度至填满显示区域。

(5)insets属性
属性insets用来设置组件四周与单元格边缘之间的最小距离。该属性的类型为Insets,Insets类仅有一个构造方法Insets(int top,int left,int bottom,int right),它的4个入口参数依次为组件上方、左侧、下方和右侧的最小距离,单位为像数。

(6)ipadx和ipady属性
这两个属性用来修改组件的首选大小。属性ipadx用来修改组件的宽度,属性ipady用来修改组件的高度。如果为正数,则在首选大小的基础上增加指定的宽度和高度。如果为负数,则在首选大小的基础上减小指定的宽度和高度。


(7)weightx和weighty属性
这两个属性用来设置网格组的每一行和每一列对额外空间的分布方式。在不设置属性weightx和weighty(即采用默认设置)的情况下,当窗体调整到足够大时,组件全部聚集在窗体的中央,在组件四周出现了大片的额外空间。为了避免这种情况出现,可以通过这两个属性设置网格组的每一行和每一列对额外空间的分布方式。

这两个属性的默认值均为0,表示不分布容器的额外空间。属性weightx用来设置其所在列对额外空间的分布方式,如果在该列中设置了多个weightx属性,则取它们的最大值为该列的分布方式;属性weighty用来设置其所在行对额外空间的分布方式,如果在该列中设置了多个weighty属性,则取它们的最大值为该列的分布方式.
(在设置网格组的每一行和每一列对额外空间的分布方式时,建议只设置第一行的weightx属性和第一列的weighty属性,这样会方便前期调试和后期维护)
网格组的行和列对额外空间的分布方式完全相同,以行为例:网格组布局管理器首先计算出每一行的分布方式,即获取每一行的weighty属性的最大值,然后计算每个最大值总和的百分比,最后将额外空间的相应百分比分配给对应行。

(在设置网格组的每一行和每一列对额外空间的分布方式时,建议为各个属性按百分比取值)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值