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

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

有没有人找到一种方法来使用 JFace向导向导页?

就可用性而言,我是否违反了向导约定?我应该考虑采用不同的方法来解决问题吗?

有帮助吗?

解决方案

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

其他提示

扩展乔唐内尔的答案:

由于 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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top