public static void showGridLayout(Shell shell) {
GridLayout gridLayout = new GridLayout();
// 设置网格的列数
gridLayout.numColumns = 3;
// 设置网格等宽
gridLayout.makeColumnsEqualWidth = true;
// 设置补白与间隔
gridLayout.verticalSpacing = 10; // 垂直间隔
gridLayout.horizontalSpacing = 10; // 水平间隔
shell.setLayout(gridLayout);
new Button(shell, SWT.PUSH).setText("B1");
new Button(shell, SWT.PUSH).setText("Wide Button 2");
new Button(shell, SWT.PUSH).setText("Button 3");
new Button(shell, SWT.PUSH).setText("B4");
new Button(shell, SWT.PUSH).setText("Button 5");
new Button(shell, SWT.PUSH).setText("B6");
// 使用GridData对象
// 方法一
Button button1 = new Button(shell, SWT.PUSH);
button1.setText("Button");
GridData gridData = new GridData(); // 创建GridData对象
gridData.horizontalAlignment = GridData.FILL; // 设置水平填充方式为充满单元格
gridData.grabExcessHorizontalSpace = true; // 设置水平抢占空间的方式
// 设置单元格对齐方式
// 设置水平方向的对齐
gridData.horizontalAlignment = SWT.BEGINNING | SWT.LEFT; // 左对齐,默认为SWT.BEGINNING
// SWT.CENTER:水平居中
// SWT.END;或 SWT.RIGHT 右对齐
// SWT.FILL 水平充满整个单元格
// 垂直对齐方式 默认为SWT.CENTER
gridData.verticalAlignment = SWT.CENTER;
// SWT.BEGINNING 或者 SWT.TOP 上对齐
// SWT.CENTER 垂直居中
// SWT.END 或者 SWT.BOTTOM 下对齐
// SWT.FILL 垂直充满整个单元格
//设置缩进大小
gridData.horizontalIndent = 20; //设置水平缩进为20像素大小
gridData.verticalIndent = 20; //设置垂直方向缩进的像素大小
//设置单元格跨行和跨列显示
gridData.horizontalSpan = 2; //设置水平跨越两个单元格
gridData.horizontalAlignment = SWT.FILL;
gridData.verticalSpan = 2; //设置垂直跨越两个单元格
gridData.verticalAlignment = SWT.FILL;
//设置单元格空间的抢占方式
gridData.grabExcessVerticalSpace = true; //设置垂直抢占
gridData.grabExcessHorizontalSpace = true; //设置水平抢占
//设置控件大小
//此属性仅当 grabExcessVerticalSpace grabExcessHorizontalSpace 为 true 时才生效
gridData.minimumHeight = 100; //显小高度
gridData.minimumWidth = 100; //最小宽度
button1.setLayoutData(gridData);
//设置控件大小 会随着窗口的变化而变化,只是在初始时起作用
gridData.widthHint = 100; //设置宽度
gridData.heightHint = 100; //设置高度
//使用GridData对象
// 方法二
Button button2 = new Button(shell, SWT.PUSH);
button2.setText("Button");
button2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL
| GridData.GRAB_HORIZONTAL));// 使用常量方式创建,与方法一的作用相同
button2.setLayoutData(gridData); // 设置按钮的布局数据
shell.open();
}