捕捉应用程序的所有KeyEvent
问题描述:
我有一个主JFrame和其他JDialog和JFrame的应用程序。捕捉应用程序的所有KeyEvent
我希望用户能够在他按F7时进行截图。
我在主框架上有一个KeyListener,但当框架失去焦点时它不会工作。
有没有比添加KeyListener到所有窗口更好的实现我想要的?
谢谢你的帮助。
答
好的我找到了我正在寻找的KeyboardFocusManager,负责将所有KeyEvent调度到焦点元素。
以下是它是如何工作的:
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(e -> {
if (e.getKeyCode() == KeyEvent.VK_F7 &&
e.getID() == KeyEvent.KEY_RELEASED) {
//do something
}
return true; //dispatch the event
});