我是Java新手,但我正在尝试使用Wizard
类生成向导(org.eclipse.jface.wizard.Wizard)
基本上我在构造函数I Wizard
中扩展addPage
我想要的两个页面。
在我的第一页上,我拿了一些凭据。
在第二页上,我想使用第一页中的凭据对数据库运行查询,以填充带有名称的表。
如何将这些值从第一页传递到第二页?
出于所有意图和目的,我目前的代码与http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htm相同,只是我从第一页的某些文本框中获取了一些字符串,并在第二页上有一个表格。
我已经阅读了有关容器的内容并看到有一个setData()方法,这是我可以使用的东西吗?
提前亲切的问候
大卫
答案 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