您可以禁用 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 插件上执行此操作。禁用后退按钮打破了惯例,但我们的业务分析师确实想要该功能。
不隶属于 StackOverflow