Как изменить размер дочерних элементов в диалоге, когда размер диалогового окна изменяется - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть композит в диалоге. Я хочу изменить размер диалогового окна, и когда размер диалогового окна изменяется, я хочу соответствующим образом обновить составной файл.

Как настроить также изменение размера композита?

Ниже приведен фрагмент кода:

protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
final GridLayout gridLayout = new GridLayout();
container.setLayout(gridLayout);

final Composite composite = new Composite(container, SWT.NONE);
final GridData gridData = new GridData(GridData.FILL, GridData.FILL, false, 
                                                                 false);
gridData.heightHint = 300;
gridData.widthHint = 600;
composite.setLayoutData(gridData);

У меня есть TableViewer внутри этого Composite.

Пожалуйста, дайте мне знать, как справиться с этим.

1 Ответ

0 голосов
/ 04 сентября 2018

Обязательно звоните setLayout на каждые Composite, которые вы создаете.

Если вы используете GridLayout для компоновки композита, используйте GridData, который задает SWT.FILL и «захватывать дополнительное пространство»:

 control.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

заставит элемент управления использовать все горизонтальное пространство.

 control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

заставит элемент управления занять все доступное пространство в обоих направлениях.

Примечание: вы должны создать новый GridData для каждого элемента управления - не не пытайтесь разделить их между элементами управления (то же самое относится к макетам).

Чтобы изменить размер диалогового окна, необходимо переопределить isResizable:

@Override
protected boolean isResizable()
{
  return true;
}
...