这是我的代码和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();
}

最佳答案

GridDatahorizontalSpan的值分别设置为2,将CompositeGridDatahorizontalAlignment值分别设置为FILL,将grabExcessHorizontalSpace的值true设置为Text

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

关于java - SWT布局重定位表单控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10971424/

10-11 20:43