GridLayout布局的灵活之处在于它利用网格布局数据GridData。通过GridData可以设置子组件在网格中的填充方式、大小边距等信息,用户可以通过子组件的setLayoutData方法设置网格布局数据。
GridData可以控制子组件在网格中的位置大小等相关显示信息。GridData可以设置如下的一些属性。
●HorizontalAlignment:表示水平对齐方式。水平对齐方式有如下几种,如表4所示,其中“Button5”按钮显示了水平对齐的方式。
●VerticalAlignment:表示子组件的垂直对齐方式,值和水平方式一样。
●HorizontalIndent:表示子组件水平偏移多少像素。
此属性和“horizontalAlignment = GridData.BEGINNING”属性一起使用。下面代码设置“Button5”水平偏移4像素,如图3所示。
GridData gridData = new GridData(); gridData.horizontalIndent = 4; button5.setLayoutData(gridData);
HorizontalSpan:表示组件水平占据几个网格。
此属性非常有用,当要设置一个组件占据几个单元格时,需要设置HorizontalSpan属性。例如,下面代码设置“Button5”按钮水平占据两个网格,如图4所示。
GridData gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.horizontalSpan = 2; button5.setLayoutData(gridData);
图3 组件水平偏移 图4 水平占据网格
●VerticalSpan:表示组件垂直占据几个网格。
●GrabExcessHorizontalSpace:表示当父组件大小改变时,子组件是否以水平方向抢占空间。
●GrabExcessVerticalSpace:表示当父组件大小改变时,子组件是否以垂直方向抢占空间。
●WidthHint:表示子组件的宽度为多少像素(前提是未设置其他相关属性)。
●HeightHint:表示子组件的高度为多少像素(前提是未设置其他相关属性)。
另外,GridData可以通过构造函数指定相应的属性值,有兴趣的读者可以参考GridData类的构造函数。