IWizard.canFinish 什么时候执行

When is IWizard.canFinish executed

我已经覆盖了 IWizardcanFinish() 方法。 API可以找到here

这是我的代码:

@Override
public boolean canFinish(){
    if(templatePage.isPageComplete() 
            && jenkinsPage.isPageComplete()
            && containerPage.isPageComplete()
            && dataSourcePage.isPageComplete()
            && queuePage.isPageComplete()
            && deploymentPage.isPageComplete()){
        return true;
    }
    else if(model.isDeployOnly()){
        return true;
    }
    return false;
}

还有像addPages()这样的其他方法也被执行了。 真的,我想知道什么时候执行canFinish()?有执行顺序的列表吗?

每当需要更新按钮栏上的按钮(返回、下一步和完成按钮)时,

canFinish 就会被 WizardDialog 调用。当向导首次显示时以及您在页面之间移动时会有调用。个别向导也可以在需要更新按钮状态时调用 IWizardContainer.updateButtons

注意:canFinish 的默认代码是:

public boolean canFinish() {
    // Default implementation is to check if all pages are complete.
    for (int i = 0; i < pages.size(); i++) {
        if (!pages.get(i).isPageComplete()) {
            return false;
        }
    }
    return true;
}

因此,如果您只想在所有页面上调用 isPageComplete,只需调用 super.canFinish