java - setFocus() 始终为假

标签 java eclipse user-interface swt rcp

我正在开发 Eclipse RCP 应用程序。在扩展 MultiPageEditorPart 的类中,我试图将焦点设置到文本字段。但是 setFocus 方法总是返回 false。

我做错了什么?

MultiPageEditor 有各种页面,在这些页面中,有 Composite - 类。这些类包含文本字段。

这是片段:(errorPage 是一个整数,我的验证发现错误的页码)

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;
     } 
    }
   }
  }

最佳答案

setFocus() 在以下情况下可能会返回 false:

  1. 也许控件是像Label这样的无焦点控件
  2. 复合型尝试在自己集中注意力之前将注意力分配给他们的 child
  3. 控件如果被禁用或隐藏则不会获得焦点
  4. 由于模态问题,输入被阻止。

所以我最好检查一下,(1) 我是否将焦点设置在正确的控件上,(2) 控件是否可见,也许包含该控件的表单不在当前选定的选项卡中。 (3) 是否打开了任何其他模态对话框。

关于java - setFocus() 始终为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2148143/

相关文章:

java - 如何使用 selenium 复制并粘贴值?

java - 在 Eclipse 中,构建 Android 应用程序时,我以某种方式删除了 "R"类,并且无法让 Eclipse 再次生成它

javascript - 来自 Postman 的 HTTP Post 可以工作,但不能通过浏览器

c++ - 无法打开QImage源文件

java - 未找到 UsernamePasswordAuthenticationToken 的 AuthenticationProvider

java - 是否可以将包含自定义 JavaFX 控件的 JAR 导入到 Scene Builder 中?

c++ - eclipse 太阳神 - "cannot run program make; unknown reason"

eclipse - 增加 Eclipse 调试器 toString 缓冲区大小

user-interface - 在fyne中向MultiLineEntry附加一些文本

python - 有关 Python TKinter 动态选项菜单的更多信息