【问题标题】:how to clear the fields in a jface Wizard on pressing the back button如何在按下后退按钮时清除 jface 向导中的字段
【发布时间】:2016-08-24 13:24:01
【问题描述】:

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

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

我还捕获了在另一个类中收集的数据,如果您希望我覆盖 WizardDialog 类并执行操作,我该怎么做。我是 java 和 SWT 的新手,更详细的解释会很好。提前谢谢

【问题讨论】:

    标签: java swt jface wizard


    【解决方案1】:

    覆盖WizardPage setVisible 方法以在页面变为活动状态时清除字段:

    @Override
    public void setVisible(final boolean visible)
    {
      super.setVisible(visible);
    
      if (visible) {
        // TODO clear your fields
      }
    }
    

    【讨论】:

    • 谢谢greg,这行得通....,我还有一个疑问,当在向导的最后一个向导页面上按下链接/按钮时如何进入第一页并且应该像一个普通的新打开的向导...,我尝试通过保留选择侦听器来调用第一个,但其他页面但未启用下一个页面,您能调查一下吗..
    【解决方案2】:

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

    @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,正如格雷格在他的回答中所说的那样可能更方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      相关资源
      最近更新 更多