Как заставить минимальную высоту мастера JFace в Eclipse? - PullRequest
3 голосов
/ 12 августа 2011

Я представляю мастера (код здесь ), который становится слишком низким, поэтому содержимое не отображается полностью (см. Скриншот ниже):

enter image description here

Как заставить мастера иметь минимальную высоту?

Согласно ответу на этот вопрос здесь, в StackOverflow , высота мастера будет равна самой большой странице мастера вмастер, но мой мастер не может быть изменен в соответствии с размером по крайней мере содержимого самой большой страницы, и я также попытался установить минимальную высоту первой видимой страницы мастера с помощью кода, подобного этому, в классе WizardPage:

@Override
public void createControl(Composite parent) {
  // create the composite to hold the widgets
  Composite composite =  new Composite(parent, SWT.NULL);
  composite.setSize(300, 1024); // TODO: Does this work?

  GridData gridData = new GridData(300, 1024);
  gridData.heightHint = 1024;
  gridData.minimumHeight = 1024;
  composite.setLayoutData(gridData);

... но пока безуспешно.

Есть подсказки?

Ответы [ 4 ]

4 голосов
/ 12 августа 2011

Попробуйте установить

parent.setLayout(new GridLayout());

для вашей createControl() реализации вашей первой страницы.

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

Если у вас есть доступ к вашему WizardDialog, вы также можете позвонить

wizardDialog.setMinimumPageSize(300, 1024)
0 голосов
/ 16 июля 2018

У меня просто была очень похожая проблема (в Windows): мастер, где на странице мастера не было сообщений, не отображался полностью. То, что быстро решило это для меня, было просто добавить сообщение с одним пробелом в конструкторе страниц мастера:

class Page extends WizardPage {

    Page() {
        super("page.id", "Page title", null);
        setMessage(" ");

Принятый ответ у меня не сработал (в мастере довольно много полей).

0 голосов
/ 14 февраля 2014

Вы можете использовать следующие коды:

parent.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent event) { parent.setSize(parent.computeSize(490, 320)); } });

0 голосов
/ 12 августа 2011

Возможно, вам потребуется указать подсказку высоты для GridData.

В качестве альтернативы, вы можете использовать GridLayout с тремя столбцами и получить все строки после первого, чтобы охватить столбцы 2 и 3. Я обычно использую GridLayout, и у меня не было этой проблемы раньше.

...