我正在研究Eclipse RCP应用程序。在扩展MultiPageEditorPart的类中,我正在尝试将焦点设置为文本字段。但是setFocus方法总是返回false。
我做错了什么?
MultiPageEditor有各种页面,在这些页面中,有Composite - 类。这些类包含文本字段。
以下是片段:( errorPage是一个int,我的验证发现错误的Pagenumber)
if(!dataValid) {
MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Fehler bei der Dateneingabe", stringBuilder.toString());
this.setActivePage(errorPage);
Composite errorComposite = (Composite) this.getControl(errorPage);
Control[] children = errorComposite.getChildren();
for (Control child : children) {
if(child instanceof Form) {
Form form = (Form) child;
Composite body = form.getBody();
Control[] formChildren = body.getChildren();
for (Control formChild : formChildren) {
if(formChild.equals(errorControl))
formChild.setFocus();
return dataValid;
}
}
}
}
答案 0 :(得分:3)
在以下情况下,setFocus()可能会返回false:
所以我最好检查,(1)我将焦点设置在正确的控件上,(2)控件是否可见,可能包含控件的表单不在当前选中的选项卡中。 (3)打开任何其他模态对话框。
答案 1 :(得分:0)
您是否尝试过Control#forceFocus()?