我想在不向我的Swing应用程序中的每个组件添加按键侦听器的情况下侦听诸如Control + S之类的按键组合。我该如何实现?
最佳答案
有可能的。
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
System.out.println("Got key event!");
return false;
}
});
这将捕获所有关键事件。返回false可使键盘焦点管理器恢复分配给各个组件的常规键事件。
如果您想捕捉按键组合,则可以保留一组“按键”。每当按键被按下时,将其添加到集合中并检查集合中已经有哪些键。释放键后,将其从集中移除。
关于java - 如何收听所有组件中的按键(在Java Swing中)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5344823/