Java 在向导页面中的何处设置焦点?

Java 在向导页面中的何处设置焦点?,java,eclipse,swt,jface,Java,Eclipse,Swt,Jface,我有一个向导,包含两个向导页面(org.eclipse.jface.Wizard.WizardPage),希望分别设置每个页面的焦点,以便始终聚焦每个页面的顶部输入字段 在向导页面中设置焦点。createControl(Composite),第一页焦点设置正确。第二页没有焦点。 这是由于Wizard.createPageControls(Composite)在开头创建了所有页面 切换到下一个向导页面后,处理焦点的位置在哪里?覆盖WizardPagesetVisible方法,并在页面变为可见时设置

我有一个
向导
,包含两个向导页面(
org.eclipse.jface.Wizard.WizardPage
),希望分别设置每个页面的焦点,以便始终聚焦每个页面的顶部输入字段

向导页面中设置焦点。createControl(Composite)
,第一页焦点设置正确。第二页没有焦点。 这是由于
Wizard.createPageControls(Composite)
在开头创建了所有页面


切换到下一个向导页面后,处理焦点的位置在哪里?

覆盖
WizardPage
setVisible
方法,并在页面变为可见时设置焦点:

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

    if (visible) {
       // TODO set focus
    }
}

覆盖
向导页面
设置可见
方法,并在页面可见时设置焦点:

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

    if (visible) {
       // TODO set focus
    }
}

JFace向导不提供指定的挂钩来设置焦点。但是,如前所述,可以使用
setVisible()
方法设置向导页面的初始焦点

通常,向导页面的焦点只能在第一次显示页面时设置。如果用户返回某个页面,则焦点应保持在页面离开时的位置

因此,我通常会保护焦点代码,使其仅在第一次显示页面时执行:

private boolean firstTimeShown=true;
@凌驾
公共void集合可见(布尔可见){
super.setVisible(可见);
如果(可见和第一次显示){
firstTimeShown=假;
控件setFocus();
}
}

JFace向导不提供指定的挂钩来设置焦点。但是,如前所述,可以使用
setVisible()
方法设置向导页面的初始焦点

通常,向导页面的焦点只能在第一次显示页面时设置。如果用户返回某个页面,则焦点应保持在页面离开时的位置

因此,我通常会保护焦点代码,使其仅在第一次显示页面时执行:

private boolean firstTimeShown=true;
@凌驾
公共void集合可见(布尔可见){
super.setVisible(可见);
如果(可见和第一次显示){
firstTimeShown=假;
控件setFocus();
}
}

好的,我就用这个。为了记录,请确保调用了
super.setVisible(visible)
,它处理
控件的可见性。是的,为answerok添加了super调用,我将使用它。仅为了记录,请确保调用了
super.setVisible(visible)
,它处理
控件的可见性。是的,为AnswerThank Rüdiger添加了super调用。为了便于记录,请确保调用了
super.setVisible(visible)
,它处理
控件的可见性。感谢您的提示,我将super调用添加到了答案中。谢谢Rüdiger。为了便于记录,请确保调用了
super.setVisible(visible)
,它处理
控件的可见性。感谢您的提示,我将super调用添加到了答案中。