2

我有一个带有单个页面的 Eclipse JFace 向导(我们称之为page1),它被添加到mainWizardusing addPage(page1).

我希望有第二页(page2),但这只能从确定的值创建page1(因此不能添加到mainWizard

当我按下下一个按钮时,有没有办法可以添加它page1来创建?

编辑:目前我已经在 中创建了新页面page1,然后getNextPage()按如下方式覆盖

@Override
public IWizardPage getNextPage() {
 if (page2 != null) {
  return page2;
 }
 System.err.println("page not populated");
 return null;
}

虽然我没有收到“页面未填充”消息,但当我按下 next 时,我会遇到NullPointerExceptionon WizardDialog.setWizard

4

3 回答 3

6

具有在现有步骤结束时动态添加页面所需的org.eclipse.jface.wizard.Wizard一切。如果满足条件,您可以通过覆盖返回新页面来实现:getNextPage

@Override
public IWizardPage getNextPage() {
   IWizardPage nextPage = super.getNextPage(page);
   if (nextPage == null) {
      if (userInputRequiresMorePage){
         // The user input is such that we need an additional page to append to the wizard.
         IWizardPage nextPage = new MyAdditionalPage();
      }
   }
   return nextPage;
}

如果您的向导仅从一页开始,默认情况下不会出现“返回”和“下一步”按钮。由于您可能需要更多步骤,因此您希望显示它们。您可以通过使用 API 设置正确的标志来做到这一点

public void org.eclipse.jface.wizard.Wizard.setForcePreviousAndNextButtons(boolean b)
于 2014-06-23T07:28:53.410 回答
3

编写 JFace 向导的典型方法是扩展Wizard类并在addPages()方法中添加页面。虽然这在许多情况下很方便,但您可以选择IWizard直接实现接口并拥有对页面创建和排序所需的所有控制。

于 2013-10-03T16:07:18.433 回答
1

您可以创建第二个页面,该页面只有一个组合并addPage在向导中调用它addPages

在第二个页面中,覆盖该setVisible(boolean)方法并创建页面可见时所需的控件。

于 2013-10-03T15:52:21.370 回答