Сделать JFace TableViewer изменить размер с окружающим композитом? - PullRequest
3 голосов
/ 22 декабря 2010

Используя WindowBuilder для Eclipse, я создал TableViewer, который я поместил внутри композита. (TableViewer создает SWT Table, в который вставляется сам TableViewer).

Я попытался изменить размер составного элемента, установив для grabExcessHorizontalSpace и grabVerticalSpace значение true, но как сделать так, чтобы таблица и TableViewer заполняли составной слой?

Ответы [ 2 ]

4 голосов
/ 22 декабря 2010

Я получил ответ (Большое спасибо rcjsuen на канале #eclipse на irc.freenode.net).

Код, который я выглядел так: Composite comp = new Composite (контейнер, SWT.NONE); comp.setLayoutData (новые GridData (SWT.LEFT, SWT.TOP, true, true, 1, 1));

Что мне нужно было сделать, в дополнение к установке grabExcessiveHorizontSpace и grabExcessiveVerticalSpace в true (параметры 3 и 4 в функции setLayoutData ()), чтобы установить параметры 1 и 2 в SWT.FILL, а также добавить объект FillLayout с помощью функции setLayout (), например:

    Composite comp = new Composite(container, SWT.NONE);
    comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    comp.setLayout(new FillLayout());
3 голосов
/ 22 декабря 2010

Трудно сказать без кода, но из вашего описания вы не установите макет на Composite.Попробуйте добавить composite.setLayout(new FillLayout());, если ваш композит содержит только TableViewer.

Если в вашем композите более одного дочернего элемента, вам потребуется другой макет, например, GridLayout или MigLayout.Затем вам также нужно установить layoutData для вашей таблицы и других дочерних элементов вашего композита.

Здесь - некоторые фрагменты, которые показывают, как использовать GridLayout.Чтобы узнать MigLayout, который я считаю лучше, см. здесь .

...