GridLayout 是更加强大且更加复杂的布局之一。GridLayout 在网格中布局窗口小部件,就会有许多可配置的参数,当调整组合体的大小时,用来控制网格行和列的缩放行为。
GridLayout 定义用来控制布局的总体策略的 API。最重要的属性为 numColumns,它确定网格的水平大小。通常,当您首次设计窗口的外观时,就要决定此值。网格中的窗口小部件的顺序与您创建它们的顺序相同。要更改网格中的窗口小部件的顺序,可以使用控件方法 moveAbove(Control) 和 moveBelow(Control)。这些方法允许窗口小部件在布局中互相之间前后插入。(“上面”和“下面”是指窗口小部件 Z 坐标顺序,而不是网格本身的位置)。
下表总结了 GridLayout 的可配置参数:
属性 |
描述 |
---|---|
horizontalSpacing |
一个单元的右边缘与它的相邻单元的左边缘之间的像素数目。 |
makeColumnsEqualWidth |
指定是否应该强制所有列为相同宽度。 |
marginWidth |
用于网格的右边缘和左边缘上的页边距的像素数目。 |
marginHeight |
用于网格顶部和底部边缘上的页边距的像素数目。 |
numColumns |
应该用来生成网格的列数。 |
verticalSpacing |
一个单元的底部边缘与它的相邻单元的顶部边缘之间的像素数目。 |
GridLayout 支持网格中的每个窗口小部件的许多其它布局参数。这些属性是在 GridData 对象中指定的。必须将 GridData 设置为网格中的每个窗口小部件的布局数据。
GridData 类定义样式常量,它允许您在 GridData 构造函数中指定布局参数的常用组合。还可以使用 GridData 中的公共方法来单独设置这些属性。
通过使用 GridData 可以获得一些高动态和复杂的布局。将不同窗口小部件的这些值组合在网格中可以生成布局的许多不同的组合。允许窗口小部件跨越单元的能力产生许多甚至不象网格的布局。
下表总结了 GridData 的可配置参数。有关进一步的描述和使用各种网格参数的示例屏幕捕捉,请参阅了解 SWT 中的布局。
属性 |
描述 |
---|---|
grabExcessHorizontalSpace |
指定单元是否应该增大,以便使用网格中可用的任何额外水平空间。在根据窗口小部件和它们的网格数据计算网格中的单元大小之后,将把“组合体”中余下的任何额外空间分配给夺取额外空间的那些单元。 |
grabExcessVerticalSpace |
指定单元是否应该增大,以便使用网格中可用的任何额外的垂直空间。 |
heightHint |
指定窗口小部件的最低高度(以及包含窗口小部件的行的最低高度)。 |
horizontalAlignment |
可以是 BEGINNING、CENTER、END 和 FILL 的其中一个。FILL 意味着将调整窗口小部件的大小,以便占据它的网格单元的整个宽度。 |
horizontalIndent |
窗口小部件与它的网格单元的左边缘之间的像素数目。 |
horizontalSpan |
指定窗口小部件应该跨越的网格中的列数。缺省情况下,窗口小部件占据网格中的一个单元。它可以通过增大此值来水平获取其它单元。 |
verticalAlignment |
可以是 BEGINNING、CENTER、END 和 FILL 的其中一个。FILL 意味着将调整窗口小部件的大小,以便占据它的网格单元的整个高度。 |
verticalSpan |
指定窗口小部件应该跨越的网格中的行数。缺省情况下,窗口小部件占据网格中的一个单元。它可以通过增大此值来垂直获取其它单元。 |
widthHint |
指定窗口小部件的最小宽度(以及包含窗口小部件的列的最小宽度)。 |