我有一个 SWT GUI,其中包含不同的元素(文本、按钮、标签...),这些元素本身位于不同的组合中。
我想使用一些键绑定(bind)使导航更容易,例如“Alt+c”调用取消按钮,“Alt+f”调用完成按钮等...在 上使用 KeyListener 时特定的组件,监听器被触发,但这意味着该组件具有焦点(这不是很方便!)。
所以我尝试在 shell 本身上注册监听器,但结果是一样的,没有触发任何内容。
无论当前关注哪个元素,我应该如何继续才能触发我的监听器?
任何提示将不胜感激。 感谢您的阅读。
编辑
关于评论,我尝试将 key 监听器递归地添加到 GUI 的所有组合中,并且它正在工作。不过,我想可能有一种“聪明”的方法可以做到这一点。
最佳答案
您可以使用 Display
addFilter
或 addListener
方法添加始终被调用的监听器。
Display.getDefault().addListener(SWT.KeyDown, new Listener() {
@Override
public void handleEvent(final Event event) {
// TODO handle event
}
});
这些监听器使用较低级别的 Listener
接口(interface),而不是 KeyListener
。
addFilter
与 addListener
类似,但更早调用并且可以更改事件。
关于java - SWT Keylistener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610866/