【问题标题】:JFace wizard passing variablesJFace 向导传递变量
【发布时间】:2010-07-01 10:59:17
【问题描述】:

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

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

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

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

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

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

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

提前问好

大卫

【问题讨论】:

    标签: java eclipse jface wizard


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这是另一种方法:

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

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

      【讨论】:

        【解决方案3】:

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

        MyWizardData.setVehicle(new Truck());
        

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-12
          • 1970-01-01
          相关资源
          最近更新 更多