SWT布局重新定位表单控件

时间:2012-06-10 18:49:23

标签: java layout swt

这是我的代码和表格截图。

我希望最顶层的文本框占用所有自由水平空间 enter image description here

![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();
}

1 个答案:

答案 0 :(得分:4)

使用GridData horizontalSpan的值为CompositeGridData的{​​{1}}的{​​{1}}的值为horizontalAlignmentFILL {1}} grabExcessHorizontalSpace小部件的值为true

我通常使用GridDataFactory创建Text对象,我认为代码更清晰。