0

我正在尝试创建一个 jface 向导。在我的向导中,我有我的“起始页”。我在“起始页”中选择的选项取决于后面有多少页。但在我看来,这是不可能的。因为在向导启动后会调用addPages()方法。addPage()方法是私有的。但是我需要在那里添加我的页面,因为当我在其他地方执行此操作时,不会调用createControl(Composite parent) 。

有什么办法可以解决这个问题吗?我想过写一个自己的方法。像这样:

public void addNewPage() {
Page page = new Page("pagename");
page.createControl(parent);
page.setDescription("");}
...

但它不起作用。你们有什么解决我的问题的方法吗?

4

2 回答 2

1

您可以在向导中添加所有页面,addPages然后覆盖getNextPage以控制按下下一步时显示哪些页面。

如果这还不够,您可以随时编写自己的IWizard接口实现。

于 2013-10-16T07:52:14.297 回答
0

org.eclipse.jface.wizard.Wizard.getNextPage如果满足条件,您可以通过覆盖来返回一个新页面(conditionForMorePages在下面的代码段中):

@Override
public IWizardPage getNextPage() {
   IWizardPage nextPage = super.getNextPage(page);
   if (nextPage == null) {
      if (conditionForMorePages){
         // we need an additional page.
         IWizardPage nextPage = new MyAdditionalPage();
      }
   }
   return nextPage;
}

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

public void setForcePreviousAndNextButtons(boolean b)
于 2014-06-23T07:34:58.153 回答