San*_*dro 13 java linux swing event-handling keyboard-events
所以我遇到的问题似乎只是在Linux上发生的错误.当按下按键时,我正试图获取我的swing应用记录,然后检测该按键何时被释放.现在这不应该是有问题的,因为KeyListener应该为我处理这个问题.
问题是,当我按住键时,我得到了许多重复的keyPressed()/ keyReleased()事件,而不仅仅是单个keypressed().有没有人有一个解决方案或解决方法来知道什么时候在Linux上真正发布了一个密钥?
谢谢.
cam*_*ckr 14
所以我遇到的问题似乎只是在Linux上发生的错误
是的,这是一个Linux问题.
在Windows上按住某个键时,您将获得多个KeyPressed事件,但只有一个KeyReleased事件.
这个问题经常被问到,我从未见过一个好的解决方案.
但我认为解决方案的基础是使用Timer.按下键时,启动计时器.当你得到另一个keyPressed时,你重启Timer.因此,只要定时器间隔大于键盘的重复率,定时器就会在按住键时连续复位.当keyPresses停止生成时,Timer将触发,因此您认为该键已被释放.这意味着您将在处理keyReleased时遇到延迟.
归档时间: |
|
查看次数: |
13967 次 |
最近记录: |