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