【问题标题】:How to perform custom navigation through JFace Eclipse Wizard pages?如何通过 JFace Eclipse 向导页面执行自定义导航?
【发布时间】:2018-06-01 17:20:44
【问题描述】:

我有五个页面的 Eclipse JFace 向导。首先,我有检查按钮来选择要显示的页面 - 如果你选中所有,你将通过整个向导,但你也可以只选择特定页面,然后只显示那些页面。

到目前为止,我将迭代器与表示每个页面的枚举对象一起使用。我在 getNextPage 函数及其 if..else 案例中调用了迭代器的下一个对象,以正确顺序返回某些页面。问题是,getNextPage 不仅在按下 Next 按钮时被调用,而且在 pageComplete 事件触发等时被调用,所以迭代器不会在我想要的时候更新它的光标,它最终会很快.这是我假设的 sn-p:

else if(page == FirstPage )
{
    // iterator contains SelectedAction - enum objects representing pages
    this.pageIterator = page.getWizardPagesList().iterator();

    if(pageIterator.hasNext())
    {
        return selectedActionToPage(pageIterator.next());
    }
}
else
{
    if(pageIterator.hasNext())
    {
        SelectedAction action = pageIterator.next();
        if(!pageIterator.hasNext())
        {
         // we check if current page was last one
            setFinished(true);
            setLastPage(selectedActionToPage(action));
        }
        // selectedActionToPage converts enum object to WizardPage class
        return selectedActionToPage(action);
    }
    else if((pageIterator != null) && !pageIterator.hasNext())
    {
        return page;
    }
}
return page;

特别想知道的是:

首先,有没有其他方法可以捕获下一步按钮的点击?我知道WizardDialog 类中有NextPressed 方法,但我不知道如何从我的Wizard 类或WizardPage 调用它的实例。 其次,是否有其他方法可以自定义页面导航,转到指定页面?

【问题讨论】:

    标签: java eclipse iterator jface wizard


    【解决方案1】:

    不,您不应该尝试拦截“下一步”按钮单击该逻辑对于向导对话框是私有的,并且您不应该尝试干预它,

    您可以覆盖WizardPage:

    public IWizardPage getNextPage()
    

    方法或者你可以覆盖Wizard

    public IWizardPage getNextPage(IWizardPage page)
    

    您可能还需要覆盖匹配的getPreviousPage 方法。无论何时调用该方法,您都必须使您的代码正常工作。您将获得有关哪个是当前页面的信息,您的代码应该使用它来确定下一页。

    【讨论】:

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