Java SWT布局重新定位表单控件
这是我的代码和表单截图 我希望最上面的文本框占据所有可用的水平空间。Java SWT布局重新定位表单控件,java,layout,swt,Java,Layout,Swt,这是我的代码和表单截图 我希望最上面的文本框占据所有可用的水平空间。 使用GridData和grabeExcessHorizontalSpan值为2的Composite,使用GridData和水平对齐的值FILL和grabeExcessHorizontalSpace值true到文本小部件 我通常使用创建GridData对象,我认为代码更干净。使用GridData和horizontalSpan,值为2的组合,和一个GridData带horizontalAlignment带值FILL的GridDa
使用
GridData
和grabeExcessHorizontalSpan
值为2的Composite
,使用GridData
和水平对齐的值FILL
和grabeExcessHorizontalSpace
值true
到文本小部件
我通常使用创建GridData
对象,我认为代码更干净。使用GridData
和horizontalSpan
,值为2的组合
,和一个GridData
带horizontalAlignment
带值FILL
的GridData
和一个grabsExcessHorizontalSpace
带值true
的小部件
我通常使用创建GridData
对象,我认为代码更干净。这就是我需要的!小问题,为什么标签、文本1和文本2没有水平对齐?“标签”与“文本1”和“文本2”位于不同的容器中,因此它们具有不同的布局管理器。为了确保第一列在两个布局管理器中具有相同的宽度,可以在GridData
s中指定宽度。或者,您可以使用一个包含6列的容器,第一个文本具有水平跨度3,并使用空标签填充右下角的空白。您也可以使用WindowBuilder。这就是我需要的!小问题,为什么标签、文本1和文本2没有水平对齐?“标签”与“文本1”和“文本2”位于不同的容器中,因此它们具有不同的布局管理器。为了确保第一列在两个布局管理器中具有相同的宽度,可以在GridData
s中指定宽度。或者,您可以使用一个包含6列的容器,第一个文本的水平跨度为3,并使用空标签填充右下角的空白。您也可以使用WindowBuilder。
![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();
}