如何在按下后退按钮时清除 jface 向导中的字段

how to clear the fields in a jface Wizard on pressing the back button

我创建了一个 JFace 向导 PCWizard 扩展 Wizard 并且有四个页面 PCPageOnePCPageTwoPCPageThreePCPageFour 扩展 WizardPage

  1. 当我到达最后一页时,我希望禁用后退和取消按钮。
  2. 当我在其他页面上按下后退按钮时,我希望页面小部件中的数据被清除,当我再次按下下一步时,我希望文本字段为空,这样下一步按钮就不会出现已激活。

我还捕获了另一个 class 中收集的数据,如果你想让我覆盖 WizardDialog class 并执行操作,我该怎么做。我是 java 和 SWT 的新手,更详细的解释是 fine.Thanx 提前

要禁用后退按钮,请在最后一页执行以下操作:

@Override
public IWizardPage getPreviousPage() {
    // prevent going back
    return null;
}

也可以在 IPageChangedListener:

中清除页面中的输入
WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
dialog.addPageChangedListener(new IPageChangedListener() {
    public void pageChanged(PageChangedEvent event) {
        // this is just a suggestion..
        IClearablePage page = (IClearablePage)event.getSelectedPage();
        page.clear();
    }
});

其中 IClearablePage 是您自己与 clear() 的接口,并且您的所有页面都实现了 IClearablePage

编辑:重写 setVisible 正如格雷格在他的回答中所说的那样可能更方便。

覆盖 WizardPage setVisible 方法以在页面激活时清除字段:

@Override
public void setVisible(final boolean visible)
{
  super.setVisible(visible);

  if (visible) {
    // TODO clear your fields
  }
}