0

在 Eclipse 中,我有一个带有表格、按钮文本字段的布局。我在以下位置创建了它们:

public class NewForm extends FormPage{
    @Override
    protected void createFormContent(final IManagedForm managedForm) {
        FormToolkit ftk= managedForm.getToolkit();

    ScrolledForm scrldfrm = managedForm.getForm();
    scrldfrm.getBody().setLayout(null);
    scrldfrm.setText("Hello there!");
    Section section = managedForm.getToolkit().createSection(
            managedForm.getForm().getBody(),
            Section.TWISTIE | Section.TITLE_BAR);
    section.setBounds(522, 10, 374, 21);
    managedForm.getToolkit().paintBordersFor(section);
    section.setText("Selected API");
    section.setExpanded(true);
    textName = new Text(managedForm.getForm().getBody(), SWT.BORDER);
    textName.setBounds(610, 67, 275, 21);
    managedForm.getToolkit().adapt(textName, true, true);
    textName.setEnabled(false);
    //similarly table is added.
    }
}

一切正常,直到用户最大化窗口。最大化窗口后,表单内容保持在同一位置,我在表单中使用了绝对值。窗口重新调整大小时如何使其增加大小?如果我不应该以形式给出绝对值,如何避免绝对值并给出相对于窗口大小的值?

4

1 回答 1

0

使用 aLayout而不是setBounds调用。GridLayout是一种可能性或FormLayout

就像是:

ScrolledForm scrldfrm = managedForm.getForm();

scrldfrm.getBody().setLayout(new GridLayout());

scrldfrm.setText("Hello there!");

Section section = managedForm.getToolkit().createSection(
        managedForm.getForm().getBody(),
        Section.TWISTIE | Section.TITLE_BAR);

section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));

managedForm.getToolkit().paintBordersFor(section);
section.setText("Selected API");
section.setExpanded(true);

textName = new Text(managedForm.getForm().getBody(), SWT.BORDER);

textName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false);

managedForm.getToolkit().adapt(textName, true, true);
textName.setEnabled(false);
于 2013-10-28T11:26:44.030 回答