2

我是 Java 新手,但我正在尝试使用Wizard该类 (org.eclipse.jface.wizard.Wizard)生成一个向导

基本上我Wizard在构造函数中扩展了addPage我想要的两个页面。

在我的第一页上,我获取了一些凭据。

在第二页上,我想使用第一页中的凭据对数据库运行查询,以填充带有名称的表。

如何将这些值从第一页传递到第二页?

就所有意图和目的而言,我目前的代码与http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htm相同,除了我从第一页的某些文本框中获取一些字符串和在第二页有一个表。

我已经阅读了有关容器的信息,发现有一个 setData() 方法,这是我可以利用的吗?

提前致以亲切的问候

大卫

4

3 回答 3

5

我喜欢在 Wizard 中创建我的数据对象并将其传递给我的每个 WizardPages 的构造函数。例如:

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

这种方法的一个优点是您可以在向导的 performFinish 期间访问您的数据对象。

于 2010-07-01T14:30:14.347 回答
3

这是另一种方法:

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

假设您在 PageTwo 上,并且在 PageOne 中为您希望在 PageTwo 上使用的值定义了 getter。

于 2011-09-14T17:28:46.513 回答
0

另一种方法是使用带有静态变量的数据类。例如,如果您有一个 NewVehicleWizard,您可能必须实例化 Car、Truck 或 SUV(Vehicle 的所有子类)。但是当向导被实例化时就不会知道了;该决定将在车辆内容中进行,这可能会在选择选项卡车时调用以下方法调用:

MyWizardData.setVehicle(new Truck());

MyWizardData 将有一个带有静态 getter 和 setter 的私有静态车辆变量。如果后续页面或 NewVehicleWizard 本身需要车辆对象,您可以简单地使用静态 getter:

Truck truck = (Truck)MyWizardData.getVehicle();
// ...work with truck here
于 2011-04-16T19:43:54.073 回答