上篇我们已经介绍了FlowLayout 、BordLayout、CardLayout、GridLayout等四种布局管理器,本篇我们继续补充其它几种布局管理器。
五、GridBagLayout(网格包布局)
1、特点:
a、与其他布局相比,网格布局要复杂得多,不过也相对灵活;
b、与网格布局相比,网格包布局允许组件大小各不相同,且一个组件可跨越一个或多个网格;
c、网格包布局还需创建一个或多个GridBagContraints对象,用来设置布局约束条件;
d、需通过调用setConstraints( )方法建立GridBagContraints对象和受控组件的关联;
e、GridBagContraints是网格包布局的核心,其对象可重复使用,只需改变相关属性即可。
2、构造方法:
GridBagLayout( );
GridBagContraints();
GridBagContraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady);
GridBagLayout只有一种无参构造方法;
而GridBagContraints有两种构造方法,其中第一种构造方法将所有字段设为默认值;第二种构造方法将其所有字段设置为传入参数,各参数作用如下:
gridx和gridy:设置组件的左上角所在网格的横向和纵向索引,默认值为GridBagContraints.RELATIVE,表示当前组件紧跟上一组件后面;
gridwidth和gridwidth:设置组件横向、纵向跨越网格数,默认值为1,当把其值设为GridBagConstraints.REMAINDER,表示当前组件为所在行或列上的最后一个组件;
weightx和weighty:设置组件占领容器水平和垂直方向多余空白区域的比例(即权重),默认值为0,即不占领多余空间;
anchor:指定组件应置于其显示区域中何处。可能的值有三种:绝对值、相对于方向的值和相对于基线的值,默认值为相对于基线的