WizardNewFileCreationPage 命令

WizardNewFileCreationPage order

我正在创建一个导出向导,包括让用户选择导出格式然后使用 WizardNewFileCreationPage 选择导出位置的可能性。

为此,我创建了 3 个页面,一个扩展 wizardPage 并带有无线电以设置要调用的下一个页面,另外 2 个页面等待格式化并扩展 WizardNewFileCreationPage。

它几乎完美地工作,我唯一的问题是 "Finish" 按钮,即使我覆盖了函数 isPageComplete 以将页面验证仅限于函数 validatePage ,它也需要可点击以确保所有导出格式都已完成.

看起来函数 validatePage 不仅对它自己的控件有效,而且对向导中 class WizardNewFileCreationPage 实现的所有控件都无效。

我是不是哪里出错了,有人知道解决办法吗?

此致, 沃尔多

所以,我认为我的问题是因为我没有实现 canFinish 方法,而该方法在默认实现中需要实现向导中包含的所有页面。为了避免我的问题,我这样做了:

@Override
public boolean canFinish() {
    if (this.getContainer().getCurrentPage() == mainPage)
        return false;
    return this.getContainer().getCurrentPage().isPageComplete();
}

注意:我的 "mainPage" 属性是定义导出格式的属性,然后是要使用的下一页。

此外,我一直通过这种方式调用 WizardNewFileCreationPage 来验证我的页面是否已完成:

@Override
public boolean isPageComplete() {
    return this.validatePage();
}

显示对话框的 WizardDialog 驱动按钮启用。在不同的点它调用它的 updateButtons 方法。这又会调用 Wizard canFinish 方法来设置“完成”按钮状态。

canFinish 的默认设置是为 每个 页面调用 WizardPage isPageComplete 方法,即使对于当前未激活的页面也是如此。

对于WizardNewFileCreationPageisPageComplete方法参考validatePage方法的结果。

因此您可以覆盖 Wizard canFinish 方法以仅测试您关心的页面。或者您可以覆盖单个页面 isPageComplete 方法以 return 您想要的结果。