我正在创建一个导出向导,包括用户可以选择导出的格式,然后使用WizardNewFileCreationPage选择导出的位置。
为此,我创建了3个页面,一个扩展了wizardPage,其中包含一个收音机以设置要调用的下一页,还有另外两个页面正在等待格式并扩展了WizardNewFileCreationPage。
它的工作几乎完美,我唯一的问题是“完成”按钮,即使我覆盖了函数isPageComplete以将页面验证仅限制为函数validatePage,也需要点击即可满足所有导出格式。
看起来函数validatePage不仅对它自己的控件有效,而且还有向导中的类WizardNewFileCreationPage实现的所有控件。
我在某个地方出错并且有人知道解决方案吗?
此致 沃尔多
答案 0 :(得分:0)
所以,我认为我的问题来自于我没有实现canFinish方法,它在其默认实现中要求完成向导中包含的所有页面。为了避免我的问题,我这样做了:
@Override
public boolean canFinish() {
if (this.getContainer().getCurrentPage() == mainPage)
return false;
return this.getContainer().getCurrentPage().isPageComplete();
}
注意:我的"主页" attribute是定义导出格式的一个属性,然后是要使用的nextPage。
另外,我一直通过这种方式调用WizardNewFileCreationPage来验证我的页面是否完整:
@Override
public boolean isPageComplete() {
return this.validatePage();
}
答案 1 :(得分:0)
WizardDialog
显示对话框驱动按钮启用。在不同的点上,它称为updateButtons
方法。这反过来调用Wizard
canFinish
方法来设置完成按钮状态。
canFinish
的默认设置是为每个页面调用WizardPage
isPageComplete
方法,即使对于当前未有效的网页也是如此。
对于WizardNewFileCreationPage
,isPageComplete
方法会查询validatePage
方法的结果。
因此,您可以覆盖Wizard
canFinish
方法,仅测试您关注的网页。或者,您可以覆盖单个页面isPageComplete
方法以返回所需的结果。