java - SWT Keylistener 未触发

标签 java eclipse swt listener accessibility

我有一个 SWT GUI,其中包含不同的元素(文本、按钮、标签...),这些元素本身位于不同的组合中。

我想使用一些键绑定(bind)使导航更容易,例如“Alt+c”调用取消按钮,“Alt+f”调用完成按钮等...在 上使用 KeyListener 时特定的组件,监听器被触发,但这意味着该组件具有焦点(这不是很方便!)。

所以我尝试在 shell 本身上注册监听器,但结果是一样的,没有触发任何内容。

无论当前关注哪个元素,我应该如何继续才能触发我的监听器?

任何提示将不胜感激。 感谢您的阅读。

编辑

关于评论,我尝试将 key 监听器递归地添加到 GUI 的所有组合中,并且它正在工作。不过,我想可能有一种“聪明”的方法可以做到这一点。

最佳答案

您可以使用 Display addFilteraddListener 方法添加始终被调用的监听器。

Display.getDefault().addListener(SWT.KeyDown, new Listener() {
  @Override
  public void handleEvent(final Event event) {
    // TODO handle event
  }
});

这些监听器使用较低级别的 Listener 接口(interface),而不是 KeyListener

addFilteraddListener 类似,但更早调用并且可以更改事件。

关于java - SWT Keylistener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610866/

相关文章:

java - 如何从共享点下载所有 wsdl 文件?

java - 一种在 Java 中使用堆栈返回新的反向单链表的方法,保留相同的元素但以相反的顺序打印出来

java - 在eclipse中配置sysdeo tomcat插件

android - R 无法解析为变量 --

javascript - SWT 浏览器未在 Eclipse View 中呈现 Angular 2 页面

java - j.u.Scanner 使用中的 NullPointerException

java - JSONObject ["name"] 未找到

java - 外部 jar 未在 MANIFEST.MF 中解析为 bundle

java - 空 jface 窗口上出现奇怪的分隔符

java - 如何在swing和swt中分离程序逻辑形式设计