eclipse wizard dialog 按钮控制

    xiaoxiao2021-03-25  59

    Eclipse向导有三部分:WizardDialog,Wizard,WizardPage。要控制WizardDialog的按钮,即“上一步”,“下一步”,“完成”。

    在WizardPage类中,有setPageComplete(boolean)方法,设置页面是否完成,为true时,“上一步”,“下一步”和“完成”按钮可用。为什么呢?看源码。

    public void setPageComplete(boolean complete) { isPageComplete = complete; if (isCurrentPage()) { getContainer().updateButtons(); } }

    接着看updateButtons()方法,该方法是IWizardContainer中的方法,而WizardDialog是其实现类,所以看其如何实现。

    public void updateButtons() { boolean canFlipToNextPage = false; boolean canFinish = wizard.canFinish(); if (backButton != null) { boolean backEnabled = currentPage != null && currentPage.getPreviousPage() != null; backButton.setEnabled(backEnabled); } if (nextButton != null) { canFlipToNextPage = currentPage != null && currentPage.canFlipToNextPage(); nextButton.setEnabled(canFlipToNextPage); } finishButton.setEnabled(canFinish); // finish is default unless it is disabled and next is enabled if (canFlipToNextPage && !canFinish) { getShell().setDefaultButton(nextButton); } else { getShell().setDefaultButton(finishButton); } }

    在这里判断“上一步”,“下一步”和“完成”按钮在什么时候是否可用,具体看canFlipToNextPage()方法,是WizardPage类的。

    public boolean canFlipToNextPage() { return isPageComplete() && getNextPage() != null; }

    所以,当isPageComplete()返回值为true时,该方法也返回true。工作流程很简单,就是设置页面是否完成,然后内部更新按钮。

    转载请注明原文地址: https://ju.6miu.com/read-40797.html

    最新回复(0)