你可以在JFace向导中禁用后退按钮吗?

时间:2008-09-05 13:48:32

标签: java eclipse rcp jface wizard

我正在为Eclipse RCP应用程序编写一个向导。在对文件进行一些处理并进行一些用户输入之后,我不想让用户返回进行更改。此时,他们必须接受或拒绝他们将要对系统进行的更改。

我似乎找不到的是一种方法调用,它允许我覆盖显示的按钮或用户点击后退按钮的能力。我宁愿它不存在或者至少被禁用。

是否有人使用JFace WizardWizardPage找到了解决方法?

可用性方面,我是否违反了向导惯例?我应该考虑采用不同的方法解决问题吗?

4 个答案:

答案 0 :(得分:11)

您可以在向导页面实现中从getPreviousPage()方法返回null。

答案 1 :(得分:6)

扩展jodonell的回答:

由于WizardPage.getPreviousPage()的默认实现中的非直观行为,禁用后退按钮比应该更难。您可以调用setPreviousPage(null),getPreviousPage()仍然返回上一页。您需要覆盖getPreviousPage()的实现以禁用后退按钮:

public abstract class MyWizardPage extends WizardPage {
    private boolean backButtonEnabled = true;

    public void setBackButtonEnabled(boolean enabled) {
        backButtonEnabled = enabled;
        getContainer().updateButtons();
    }

    @Override
    public IWizardPage getPreviousPage() {
        if (!backButtonEnabled) {
            return null;
        }
        return super.getPreviousPage();
    }
}

请参阅我的博文,了解更多JFace向导提示和技巧:

http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html

答案 2 :(得分:3)

从UI的角度来看,这似乎相当糟糕。如果用户犯了错误并希望返回并纠正它而你不会让他们失望,那么他们会感到沮丧。我认为更改应用程序以允许返回而不是寻找防止它的方法会更好。

答案 3 :(得分:0)

使用标准JFace向导API无法执行此操作。我的团队通过编写自定义WizardDialog来完成此任务。我们在Eclipse RCP应用程序上执行此操作,而不是在eclipse插件上执行此操作。禁用后退按钮违反惯例,但我们的业务分析师确实想要这个功能。