Java 如何停止Swing中重复的keyPressed()/keyReleased()事件

Java 如何停止Swing中重复的keyPressed()/keyReleased()事件,java,linux,swing,event-handling,keyboard-events,Java,Linux,Swing,Event Handling,Keyboard Events,因此,我遇到的问题似乎是一个只在Linux上出现的bug。我试图在按下某个键时记录swing应用程序,然后检测该键何时释放。现在这不应该成为问题,因为他应该为我处理这件事 问题是,当我按住键时,会出现大量重复的keyPressed()/keyReleased()事件,而不仅仅是单个keyPressed()。是否有人有一个解决方案或解决办法来了解linux上何时真正发布密钥 多谢各位 所以我现在的问题是 似乎是一个只会发生的错误 在Linux上 是的,这是一个Linux问题 在Windows上,当

因此,我遇到的问题似乎是一个只在Linux上出现的bug。我试图在按下某个键时记录swing应用程序,然后检测该键何时释放。现在这不应该成为问题,因为他应该为我处理这件事

问题是,当我按住键时,会出现大量重复的keyPressed()/keyReleased()事件,而不仅仅是单个keyPressed()。是否有人有一个解决方案或解决办法来了解linux上何时真正发布密钥

多谢各位

所以我现在的问题是 似乎是一个只会发生的错误 在Linux上

是的,这是一个Linux问题

在Windows上,当按下一个键时,会出现多个按键按下事件,但只有一个按键释放事件

这个问题经常被问到,我从来没有看到一个好的解决办法


但我认为解决方案的基础是使用计时器。当按下该键时,启动计时器。当按下另一个键时,重新启动计时器。因此,只要计时器间隔大于键盘的重复频率,当按下一把钥匙时,计时器将持续重置。当按键停止生成时,计时器将启动,因此您假定按键已被释放。这意味着您将延迟处理释放的密钥。

以下是Sun的错误(包括示例解决方法):

此问题重复


作为AWTEventListener实现,可以在应用程序开始时安装。

您可以找到一个很好的解决方法。

使用KeyEventDispatcher实现,您可以正确绑定密钥。

如何获得Java中的“键盘重复率”?这是操作系统用户偏好设置,对吧?链接又死了。回程机: