这是我的代码和form的屏幕截图。
我希望最上方的文本框占用所有可用的水平空间。
![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();
}
最佳答案
将GridData
和horizontalSpan
的值分别设置为2,将Composite
和GridData
的horizontalAlignment
值分别设置为FILL
,将grabExcessHorizontalSpace
的值true
设置为Text
。
我通常使用GridDataFactory创建GridData
对象,我认为代码更干净。
关于java - SWT布局重定位表单控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10971424/