SWT: computeSize () не имеет никакого эффекта - PullRequest
1 голос
/ 03 апреля 2012

У меня есть композит, и я хочу добавить к нему таблицу. Пока все хорошо, но в начале таблицы нет входных данных, поэтому в композите отображается только заголовок. Но я хочу, чтобы таблица имела высоту по умолчанию (минимальную) (ширина должна управляться GridLayout композита). Композитный захватывает вертикальное и горизонтальное пространство своего родителя, поэтому для таблицы должно быть достаточно места. Я добавляю таблицу так:

//comp is my composite
TableViewer viewer = new TableViewer(comp);
viewer.getTable().setHeaderVisible(true);
//Add two TableViewerColumns
//300 should be the minimum / default height
viewer.computeSize(SWT.DEFAULT, 300);

Больше ничего не добавлено в составной объект, и составной объект, кажется, захватывает все пустое пространство от своего родителя, но таблица не расширяется до высоты 300 (ширина верна!).

Я надеюсь, вы понимаете мою проблему:)

1 Ответ

4 голосов
/ 03 апреля 2012

computeSize возвращает точку, которая представляет предпочтительный размер таблицы - это фактически не устанавливает размер компонента, так как макет может игнорировать предпочтительный размер

Если вы хотите абсолютную фиксированную высоту длятаблицу, вы можете сделать это, установив родительский стол таблицы для использования макета GridLayout, а затем настройте GridData для таблицы:

comp.setLayout(new GridData());

gridData = new GridData();
gridData.heightHint = 300;

viewer.getTable().setLayoutData(gridData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...