7

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

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

有没有人找到使用JFace WizardWizardPage的方法?

可用性方面,我是否打破了向导约定?我应该考虑用不同的方法来解决这个问题吗?

4

4 回答 4

12

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

于 2008-09-05T13:51:12.907 回答
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

于 2011-07-21T18:06:35.207 回答
3

从 UI 的角度来看,这似乎相当糟糕。如果您的用户犯了错误并想要返回并纠正它而您不让他们这样做,他们会感到沮丧。我认为更改应用程序以允许返回而不是寻找阻止它的方法会好得多。

于 2008-09-05T13:57:44.500 回答
0

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

于 2008-09-18T13:10:28.997 回答