Мастер JFace передает переменные - PullRequest
2 голосов
/ 01 июля 2010

Я новичок в Java, но пытаюсь создать мастера, используя класс Wizard (org.eclipse.jface.wizard.Wizard)

В основном, где я расширяю Wizard в конструкторе, я addPage две страницы, которые я хочу.

На моей первой странице я принимаю некоторые учетные данные.

На второй странице я хочу выполнить запрос к базе данных, используя учетные данные с первой страницы, чтобы заполнить таблицу именами.

Как мне передать эти значения с первой на вторую страницу?

По сути, мой код в настоящее время такой же, как http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htm, за исключением того, что я получаю некоторые строки из некоторых текстовых полей на первой странице и имею таблицу на второй странице.

Я прочитал о контейнерах и вижу, что есть метод setData (), это то, что я могу использовать?

С наилучшими пожеланиями заранее

David

Ответы [ 3 ]

5 голосов
/ 01 июля 2010

Мне нравится создавать мой объект данных в мастере и передавать его в конструктор каждой из моих страниц мастера. Например:

public void addPages() {
  data = new MyData()
  addPage(new FirstPage(data));
  addPage(new SecondPage(data));
  ...
}

Одним из преимуществ этого подхода является то, что у вас есть доступ к вашему объекту данных во время выполненияфига мастера.

3 голосов
/ 14 сентября 2011

Вот еще один способ сделать это:

PageOne pageOne = (PageOne) getWizard().getPreviousPage(this);

Предположим, вы находитесь на PageTwo, и в PageOne вы определили свои геттеры для значений, которые вы хотите использовать на PageTwo.

0 голосов
/ 16 апреля 2011

Другой подход заключается в использовании класса данных со статическими переменными. Например, если у вас есть NewVehicleWizard, вам, возможно, придется создать экземпляр Car, Truck или SUV (все подклассы Vehicle). Но это не будет известно, когда волшебник будет создан; это решение будет принято в VehicleTypePage, который может сделать следующий вызов метода при выборе опции Truck:

MyWizardData.setVehicle(new Truck());

MyWizardData будет иметь личную статическую переменную транспортного средства со статическим геттером и сеттером. Если объект транспортного средства нужен на следующей странице или самому NewVehicleWizard, вы можете просто использовать статический метод получения:

Truck truck = (Truck)MyWizardData.getVehicle();
// ...work with truck here
...