3

我在编辑器中有两个部分,它们使用TableWrapLayout. 正如您在下面的屏幕截图中看到的,右侧部分的标题没有使用全宽。展开时,部分的标题和内容都使用全宽。当该部分再次关闭时,它会保持这种状态。所以问题只有在打开编辑器时才会出现。

那么,如何让部分部分使用全宽?我已经将grabHorizontalTableWrapData 的属性设置为trueGridData.FILL_HORIZONTAL在底层复合材料上使用。

当然,立即将该部分设置为展开可以解决问题,但我希望最初将其关闭,因为加载该部分的内容会导致一些繁重的后端工作,因此会导致编辑器的加载时间更长。

编辑

编辑器代码:

public void createPartControl(Composite parent) {
    toolkit = new FormToolkit(parent.getDisplay());

    form = toolkit.createScrolledForm(parent);
    form.setLayoutData(new GridData(GridData.FILL_BOTH));

    toolkit.decorateFormHeading(form.getForm());

    TableWrapLayout layout = new TableWrapLayout();
    layout.numColumns = 2;
    form.getBody().setLayout(layout);

    createMetaInfoSection();
    createUpdateDocumentSection();  
}

private void createMetaInfoSection() {
    Section metaInfoSection = toolkit.createSection(form.getBody(), Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED);
    TableWrapData twd = new TableWrapData();
    twd.grabHorizontal = true;
    twd.colspan = 1;
    metaInfoSection.setLayoutData(twd);

    // Composite
    Composite composite = toolkit.createComposite(metaInfoSection);
    GridLayout gridLayout = new GridLayout();
    composite.setLayout(gridLayout);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    // Content
    ...

    metaInfoSection.setClient(composite);
}

private void createUpdateDocumentSection() {
    Section updateDocumentSection = toolkit.createSection(form.getBody(), Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED);
    TableWrapData twd = new TableWrapData();
    twd.grabHorizontal = true;
    twd.colspan = 1;
    updateDocumentSection.setLayoutData(twd);

    // Composite
    Composite composite = toolkit.createComposite(updateDocumentSection);
    GridLayout gridLayout = new GridLayout();
    composite.setLayout(gridLayout);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    // Content
    ...

    updateDocumentSection.setClient(composite);
}
4

1 回答 1

2

试试这个

TableWrapData twd = new TableWrapData(TableWrapData.FILL_GRAB);
于 2012-08-20T15:41:46.543 回答