1

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

我希望最上面的文本框占用所有可用的水平空间。
在此处输入图像描述

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

1 回答 1

4

GridData带有horizontalSpan值 2 的 a 用于Composite,将GridData带有horizontalAlignment带有值FILL的 a 和grabExcessHorizontalSpace带有值true的小部件用于Text小部件。

我通常使用GridDataFactory来创建GridData对象,我认为代码更干净。

于 2012-06-10T19:07:47.127 回答