正如我在评论中已经提到的,为应用程序全局拦截 KeyEvents 设计的类是KeyEventDispatcher:
  KeyEventDispatcher 与当前的 KeyboardFocusManager 在所有 KeyEvent 的定位和调度中协作。使用当前 KeyboardFocusManager 注册的 KeyEventDispatcher 将在将 KeyEvent 分派到其目标之前接收它们,从而允许每个 KeyEventDispatcher 重新定位事件、使用它、分派事件本身或进行其他更改。
因此,任务是实现一个调度程序,它在 dispatch(KeyEvent) 方法中执行您想要的操作,例如:
public class MyDispatcher implements KeyEventDispatcher {
    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (!e.isConsumed()) {
            if (processMyStuff(e)) {
                e.consume();
            }
        }
        return false;
    }
    protected boolean processMyStuff(KeyEvent e) {
        if (!isMyTrigger(e)) return false;
        doMyStuff();
        return true; 
    }
}
// usage:
KeyboardFocusManager.getCurrentKeyboardFocusManager()
    .addKeyEventDispatcher(new MyDispatcher());
请注意,您可以通过向 Toolkit 添加全局侦听器来实现目标,但需要注意以下几点:
- 作为一般规则,使用最适合工作的工具,特别是如果它是为满足确切要求而设计的
 
- AWTEventListener 可能无法在安全受限的上下文中工作