如何监听所有组件的按键(在 Java Swing 中)? [英] How can I listen for key presses (within Java Swing) across all components?
问题描述
我想侦听诸如 Control+S 之类的组合键,而无需向 Swing 应用程序中的每个组件添加键侦听器.我怎样才能做到这一点?
I would like to listen for key combinations such as Control+S without adding key listeners to each component in my Swing application. How can I achieve this?
推荐答案
有可能.
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
System.out.println("Got key event!");
return false;
}
});
这将抓取所有关键事件.返回 false 允许键盘焦点管理器恢复对各种组件的正常键事件分派.
That will grab all key events. Returning false allows the keyboard focus manager to resume normal key event dispatching to the various components.
如果您想捕捉组合键,您可以保留一组按下的键".每当按下某个键时,将其添加到集合中并检查集合中已有哪些键.释放键后,将其从集合中删除.
If you want to catch key combos, you can keep a set of "pressed keys." Whenever a key is pressed, add it to the set and check what keys are already in the set. When a key is released, remove it from the set.
这篇关于如何监听所有组件的按键(在 Java Swing 中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!