我发现在任何使用Key Listeners的类中实现的方法包括keyPressed,keyReleased和keyDown,但是如何在按键保持按下时连续发生某些事情呢?意思是有没有办法实现“keyHeld”类型的场景?
答案 0 :(得分:2)
不要使用KeyListener。 Swing旨在与Key Bindings一起使用。
我已经在这种情况下使用了Swing Timer,因为您现在可以完全控制重复率。使用keyPressed绑定启动Timer并使用keyReleased绑定停止Timer。 Swing教程还有一个关于如何使用计时器的部分。
答案 1 :(得分:1)
有两种一般机制。
按住键时将重复调用 keyPressed
,直到键被释放。但是,第一次按键和重复键之间通常会有短暂的延迟。
或者,你可以设置一个标志,指示他们按下了键,并在释放时重置标志。
对此最简单的解决方案可能是使用某种List
包含al,即当前按下的虚拟键码。然后,您只需要检查此列表,看它是否包含您需要使用的虚拟密钥代码,并在其执行时采取适当的操作。
这引出了警告,不要在事件调度线程之外的任何线程中交互或更改任何UI组件
答案 2 :(得分:1)
keyTyped
方法在密钥关闭时连续调用,具有初始延迟:
s.....ssssssssssssssssssssssssss