你能否在JFace向导中禁用返回按钮?

7
我正在为Eclipse RCP应用程序编写向导。 在对文件进行一些处理并接受用户输入后,我不想让用户返回进行更改。 此时,他们必须接受或拒绝即将对系统进行的更改。
我找不到一个方法调用来覆盖显示的按钮或用户点击返回按钮的能力。 我希望它不在那里,或者至少被禁用。
是否有人使用JFace Wizard和WizardPage找到了实现这一点的方法?
从可用性的角度来看,我是否违反了向导的约定? 我应该考虑解决问题的不同方法吗?
4个回答

12

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


7

在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


3

从用户界面的角度来看,这似乎相当糟糕。如果用户犯了错误并想要返回并进行更正,但你不允许他们这样做,那么他们会感到沮丧。我认为最好的方法是改变应用程序,允许用户返回而不是寻找防止这种情况发生的方法。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接