Java 如何在按下后退按钮时清除jface向导中的字段
我已经创建了一个JFace向导Java 如何在按下后退按钮时清除jface向导中的字段,java,swt,jface,wizard,Java,Swt,Jface,Wizard,我已经创建了一个JFace向导PCWizard扩展wizard,共有四页 PCPageOne,PCPageTwo,PCPageTwo和PCPageFour扩展WizardPage 当我到达最后一页时,我希望“后退”和“取消”按钮被禁用 当我在其他页面上按下后退按钮时,我希望页面小部件中的数据被清除,当我再次按下下一步时,我希望文本字段为空,这样下一步按钮就不会被激活 我还捕获了在另一个类中收集的数据,如果您希望我覆盖向导对话框类并执行该操作,我将如何执行该操作。我对java和SWT还不熟悉,可以
PCWizard
扩展wizard
,共有四页
PCPageOne
,PCPageTwo
,PCPageTwo
和PCPageFour
扩展WizardPage
我还捕获了在另一个类中收集的数据,如果您希望我覆盖
向导对话框
类并执行该操作,我将如何执行该操作。我对java和SWT还不熟悉,可以进行更详细的解释。要禁用“后退”按钮,请在最后一页中执行以下操作:
@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();
}
});
其中,iclerablepage
是您自己的带有clear()
的接口,您的所有页面都实现了iclerablepage
编辑:如格雷格在回答中所述,覆盖
setVisible
可能更方便。要禁用后退按钮,请在最后一页执行以下操作:
@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();
}
});
其中,iclerablepage
是您自己的带有clear()
的接口,您的所有页面都实现了iclerablepage
编辑:覆盖
setVisible
,正如格雷格在他的回答中所说的那样可能更方便。覆盖向导页面
setVisible
方法,以便在页面激活时清除字段:
@Override
public void setVisible(final boolean visible)
{
super.setVisible(visible);
if (visible) {
// TODO clear your fields
}
}
覆盖
向导页面
设置可见
方法,以便在页面处于活动状态时清除字段:
@Override
public void setVisible(final boolean visible)
{
super.setVisible(visible);
if (visible) {
// TODO clear your fields
}
}
谢谢greg,这起作用了……,我还有一个疑问,当在向导的最后一个向导页面上按下一个链接/按钮,并且应该像一个正常的新打开的向导一样工作时,如何进入第一个页面…,我尝试通过保留一个选择侦听器来调用第一个页面,但其他页面没有启用下一个页面,你能看一下吗..谢谢greg,这很有效..我还有一个疑问,当在向导的最后一页上按了一个链接/按钮,并且应该像一个正常的新打开的向导一样工作时,如何进入第一页。。。,我试着通过保留一个选择侦听器来调用第一个页面,但是其他页面没有启用下一个页面,您能查看一下吗。。