1
這是我的代碼和窗體的截圖。SWT佈局重定位窗體控件
我想要最上面的文本框取所有自由的水平空間。
![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();
}
這就是我需要的!小問題,爲什麼Label,text1和text2沒有水平對齊? – kenny
「標籤」與「文本1」和「文本2」位於不同的容器中,因此它們具有不同的佈局管理器。爲了確保第一列在2個佈局管理器中具有相同的寬度,您可以在'GridData'中指定一個寬度。或者,您可以使用一個帶有6列的容器,第一個水平跨度爲3的文本,以及空白標籤填充右下角的空白區域。 – Baldrick
您也可以使用WindowBuilder。 –