eclipse JFace向导传递变量

5q4ezhmt  于 2022-12-12  发布在  Eclipse
关注(0)|答案(3)|浏览(105)

我尝试使用Wizard类(org.eclipse.jface.wizard.Wizard)生成一个向导
基本上我在构造函数中扩展了Wizard,我想要的两个页面。
在我的第一页上,我带了一些凭据。
在第二个页面上,我希望使用第一个页面中的凭据对数据库运行查询,以便用名称填充表。
如何将这些值从第一页传递到第二页?
实际上,我目前的代码与http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htm相同,只是我从第一页的一些文本框中获取了一些字符串,并在第二页上有一个表格。
我读过有关容器的文章,发现有一个setData()方法,我可以利用这个方法吗?

gc0ot86w

gc0ot86w1#

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

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

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

92dk7w1h

92dk7w1h2#

下面是另一种方法:

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

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

h43kikqp

h43kikqp3#

另一种方法是使用带有静态变量的数据类。例如,如果您有一个NewVehicleWizard,您可能必须示例化Car、Truck或SUV(Vehicle的所有子类)。但是,当示例化向导时,这将是未知的;将在VehicleTypePage中做出该决定,当选择选项Truck时,VehicleTypePage可以进行以下方法调用:

MyWizardData.setVehicle(new Truck());

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

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

相关问题