Man*_*lva 4 java eclipse jface
现在,我可以根据第一页选择设置第二个向导页面的内容,我正在寻找一种方法,当用户单击第一页上的下一个按钮时,将焦点放在第二页的内容上.
默认情况下,当用户单击下一个按钮时,焦点将放在按钮组合上(下一个,后退或完成按钮,具体取决于向导配置)
我发现将焦点放在页面内容上的唯一方法是:
public class FilterWizardDialog extends WizardDialog {
    public FilterWizardDialog(Shell parentShell, IWizard newWizard) {
        super(parentShell, newWizard);
    }
    @Override
    protected void nextPressed() {
        super.nextPressed();
        getContents().setFocus();
    }
}
对我来说,为了实现这种行为,必须覆盖WizardDialog类有点"无聊和沉重".更重要的是,WizardDialog javadoc说:
客户端可以是子类
WizardDialog,尽管这很少需要.
您对此解决方案有何看法?有没有更简单,更清洁的解决方案来完成这项工作?
这个帖子建议:
在向导页面中,使用在
setVisible()显示页面之前自动调用的继承方法:
public void setVisible(boolean visible) {
   super.setVisible(visible);
   // Set the initial field focus
   if (visible) {
      field.postSetFocusOnDialogField(getShell().getDisplay());
   }
}
postSetFocusOnDialogField方法包含:
/**
 * Posts <code>setFocus</code> to the display event queue.
 */
public void postSetFocusOnDialogField(Display display) {
    if (display != null) {
        display.asyncExec(
            new Runnable() {
                public void run() {
                    setFocus();
                }
            }
        );
    }
}
| 归档时间: | 
 | 
| 查看次数: | 1685 次 | 
| 最近记录: |