JFace向导传递变量

时间:2010-07-01 10:59:18

标签: java eclipse jface wizard

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

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

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

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

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

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

我已经阅读了有关容器的内容并看到有一个setData()方法,这是我可以使用的东西吗?

提前亲切的问候

大卫

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

这是另一种方法:

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

假设你在PageTwo上,在PageOne中你已经为你想在PageTwo上使用的值定义了你的getter。

答案 2 :(得分:0)

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

MyWizardData.setVehicle(new Truck());

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

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