捕捉应用程序的所有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 
       });