`

布局管理器(五)——GridBagyout 编辑(2)

 
阅读更多

          上一篇中对GridBagLayout的整理主要来自《Java核心技术第八版(卷I)》和《Java 高级编程(第二版)》以及网上一些信息的整理,还是显得内容比较冗长,复杂,内容太多。下面对上一篇做一个简单的归纳拓展。
       GridBagLayout管理的容器中添加的每一个组件都关联一组约束值,这些约束值封装在GridBagConstraints类的实例中。 GridBagConstraints提供两个构造函数:无参构造函数和传递11个约束值的构造函数,尽管这两个构造函数都可使用,但后一个构造函数传递 的参数实在是太多了, 一般都是使用无参构造函数,然后修改自己设定的部分约束值,指的说明的是, GridBagConstraints的这11个约束值并不是通过get/set方式来设定,而是直接通过  【对象.属性(如 constraints.fill)】来设定, 虽然容器添加的组件通常不止一个,且每个组件都有格子的约束值,但可以为所有组件使用同一个GridBagConstraints实例
GridBagConstraints的11个参数:
1)int gridx,gridy
     指定单元格的起始行和列,默认为0。

2)int gridwidth,gridheight
     指定跨越单元格的行和列的范围,默认为1。

3)double weightx,weighty
     单元格在扩大时的增量域,默认为0.0

4)int fill
     指定组件在单元格内的填充行为,默认为NONE

5)int anchor
     表示组件在单元格内的对齐方式,默认为CENTER

6)int ipadx,ipady
     指定组件周围的内部填充,默认为0。

7)Insets insets
     指定组件边框周围的外部填充,默认为不填充。

 

       因为GridBagConstraints类没有set方法来设置其属性,而且类名较长,这儿可以使用帮助类GBC来实现GridBagConstraints的约束值的设置:
1.名字简短:GBC extends GridBagConstraints
2.创建最床用的构造函数GBC(int gridx,int gridy)和GBC(int gridx,int gridy,int Gridwidth,int gridheight)
3.设置便捷的setter,setter方法返回this,使得可以继续链接它们
    GBC setGridXY(int gridx,int gridy){…… return this;};

    GBC setGridWH(int gridweight,int gridheight){…… return this;};

    GBC setWeight(double weightx,double weighty){…… return this;};

    GBC setAnchor(int anchor){…… return this;};

    GBC setFill(int fill){…… return this;};

    GBC setInsets(Insets insets){…… return this;};

    GBC setIpad(int ipadx,ipady){…… return this;};

 

使用网格组布局的一些步骤:
1.在纸上画出组件布局草图
2.找出一种网格,小组件被放置在一个单元格内,大组件将横跨多个单元格
3.用0,1,2....标识网格的行和列,现在可以读取gridx,gridy,gridwidth和gridheight的值
4.对于每个组件,考虑如下问题:是否需要水平或者垂直填充它所在的单元格?如果不需要,那么那么希望如何排列?这些就是fill和anchor参数的设置
5.将所有组件的增量设置为100.如果需要某行或者某列始终保持默认的大小,将将这行的weightx和weighty设置为0
6.编写代码,仔细检查GridBagConstraints的设置,错误的约束可能会破坏整个布局
7.编译、运行

 

参考:

1. Pro Java Programming(Second Edition)

 2. Core Java I

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics