如何侦听所有组件上的按键(在 Java Swing 中)?
2022-09-01 11:37:11
我想侦听组合键(如 +),而不向 Swing 应用程序中的每个组件添加键侦听器。我怎样才能做到这一点?ControlS
我想侦听组合键(如 +),而不向 Swing 应用程序中的每个组件添加键侦听器。我怎样才能做到这一点?ControlS
这是可能的。
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
System.out.println("Got key event!");
return false;
}
});
这将抓住所有关键事件。返回 false 允许键盘焦点管理器恢复对各个组件的正常按键事件调度。
如果你想捕捉键连击,你可以保留一组“按下的键”。每当按下某个键时,将其添加到该组中,并检查该组中已有哪些键。释放密钥后,将其从密钥集中移除。