这是我的代码和表格截图。
我希望最顶层的文本框占用所有自由水平空间
![Display display = new Display();][1]
Shell shell = new Shell(display);
shell.setLayout(new GridLayout());
Group group = new Group(shell, SWT.FILL);
group.setText("Group");
group.setLayout(new GridLayout(4, false));
group.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
Label lb = new Label(group, SWT.NONE);
lb.setText("label");
new Text(group, SWT.BORDER);
Button btn = new Button(group, SWT.CHECK);
Label lbbtn = new Label(group, SWT.NONE);
lbbtn.setText("check");
Composite comp = new Composite(group, SWT.NONE);
comp.setLayout(new GridLayout(4, false));
comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
Label lb1 = new Label(comp, SWT.NONE);
lb1.setText("Text1");
Text txt = new Text(comp, SWT.BORDER);
Label lb2 = new Label(comp, SWT.NONE);
lb2.setText("Text2");
txt = new Text(comp, SWT.BORDER);
Label lb3 = new Label(comp, SWT.NONE);
lb3.setText("Text3");
txt = new Text(comp, SWT.BORDER);
Label lb4 = new Label(comp, SWT.NONE);
lb4.setText("Text4");
txt = new Text(comp, SWT.BORDER);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
答案 0 :(得分:4)
使用GridData
horizontalSpan
的值为Composite
,GridData
的{{1}}的{{1}}的值为horizontalAlignment
,FILL
{1}} grabExcessHorizontalSpace
小部件的值为true
。
我通常使用GridDataFactory创建Text
对象,我认为代码更清晰。