如何在按下后退按钮时清除 jface 向导中的字段
how to clear the fields in a jface Wizard on pressing the back button
我创建了一个 JFace 向导 PCWizard
扩展 Wizard
并且有四个页面
PCPageOne
、PCPageTwo
、PCPageThree
和 PCPageFour
扩展 WizardPage
。
- 当我到达最后一页时,我希望禁用后退和取消按钮。
- 当我在其他页面上按下后退按钮时,我希望页面小部件中的数据被清除,当我再次按下下一步时,我希望文本字段为空,这样下一步按钮就不会出现已激活。
我还捕获了另一个 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
}
}
我创建了一个 JFace 向导 PCWizard
扩展 Wizard
并且有四个页面
PCPageOne
、PCPageTwo
、PCPageThree
和 PCPageFour
扩展 WizardPage
。
- 当我到达最后一页时,我希望禁用后退和取消按钮。
- 当我在其他页面上按下后退按钮时,我希望页面小部件中的数据被清除,当我再次按下下一步时,我希望文本字段为空,这样下一步按钮就不会出现已激活。
我还捕获了另一个 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
}
}