我编写了一个 Swing GUI,它在 JMenuItems 上使用 KeyAccelerators。长时间按下触发加速器的键会导致 EventQueue 堆叠命令并阻塞 GUI。我希望 AWT 事件队列中的控制修饰符不超过一个(或两个)KeyEvents。我试过这个:
AWTEvent awtevent = Toolkit.getDefaultToolkit()
.getSystemEventQueue().peekEvent();
if (awtevent != null) {
String paramString = awtevent.paramString();
if ((paramString.indexOf("modifiers=Ctrl") != -1 && ((KeyEvent) event)
.isControlDown())) {
((KeyEvent) event).consume();
} else if (paramString.indexOf("modifiers=Ctrl") != -1
&& (paramString.indexOf("keyChar=Undefined") != -1)) {
((KeyEvent) event).consume();
}
}
但它非常不可靠,因为它有时会消耗不应消耗的事件。