Родитель ScrolledComposite с GridLayout

Я хотел бы иметь ScrolledComposite, у которого есть родитель с GridLayout, но полоса прокрутки не отображается, если я не использую FillLayout. Моя проблема с FillLayoutзаключается в том, что его дочерние элементы занимают равные части доступного пространства.

В моем случае есть два виджета, верхний должен занимать не более 1/4 окна, а ScrolledCompositeдолжен занимать оставшееся пространство. Тем не менее, они оба берут половину этого.

Есть ли способ использовать GridLayoutс ScrolledCompositeили можно изменить поведение FillLayout?

Вот мой код:

private void initContent() {

    //GridLayout shellLayout = new GridLayout();
    //shellLayout.numColumns = 1;
    //shellLayout.verticalSpacing = 10;
    //shell.setLayout(shellLayout);
    shell.setLayout(new FillLayout(SWT.VERTICAL));

    searchComposite = new SearchComposite(shell, SWT.NONE);
    searchComposite.getSearchButton().addListener(SWT.Selection, this);

    ScrolledComposite scroll = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
    scroll.setLayout(new GridLayout(1, true));

    Composite scrollContent = new Composite(scroll, SWT.NONE);
    scrollContent.setLayout(new GridLayout(1, true));

    for (ChangeDescription description : getChanges(false)) {
        ChangesComposite cc = new ChangesComposite(scrollContent, description);
    }

    scroll.setMinSize(scrollContent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    scroll.setContent(scrollContent);
    scroll.setExpandVertical(true);
    scroll.setExpandHorizontal(true);
    scroll.setAlwaysShowScrollBars(true);

}
7
задан Lii 14 September 2017 в 09:01
поделиться