所以我遇到的问题似乎是只在Linux上发生的错误
是的,这是Linux问题。
在Windows上,当按下某个键时,您会收到多个KeyPressed事件,但只有一个KeyReleased事件。
但是我认为解决方案的基础是使用计时器。按下键后,将启动计时器。当您再次按下另一个键时,将重新启动计时器。因此,只要计时器间隔大于键盘的重复频率,就可以在按住键时不断重置计时器。当keyPresses停止生成时,计时器将触发,因此您假设已释放键。这意味着您在处理keyReleased时会有延迟。
如何停止Swing中重复的keyPressed()/ keyReleased()事件
所以我遇到的问题似乎是只在Linux上发生的错误
是的,这是Linux问题。
在Windows上,当按下某个键时,您会收到多个KeyPressed事件,但只有一个KeyReleased事件。
但是我认为解决方案的基础是使用计时器。按下键后,将启动计时器。当您再次按下另一个键时,将重新启动计时器。因此,只要计时器间隔大于键盘的重复频率,就可以在按住键时不断重置计时器。当keyPresses停止生成时,计时器将触发,因此您假设已释放键。这意味着您在处理keyReleased时会有延迟。