3

を使用して並べて配置されたエディターに 2 つのセクションがありTableWrapLayoutます。以下のスクリーンショットでわかるように、右側のセクションの見出しは全幅を使用していません。展開すると、セクションの見出しとコンテンツの両方が全幅を使用します。セクションが再び閉じられると、そのままになります。そのため、問題はエディターを開いたときにのみ発生します。

では、セクション セクションで全幅を使用するにはどうすればよいでしょうか。私はすでにgrabHorizontalTableWrapData の属性を設定し、基礎となるコンポジットtrueで使用しています。GridData.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 に答える