2011-09-24 112 views
7

当您键入一个文本框并按住某个键时,您将获得(a ....... aaaaaaaaaaaaaaa),具体取决于初始按键延迟。消除初始按键延迟

addKeyListener(new KeyAdapter() { 
    public void keyPressed(KeyEvent e) { 
     // Handle key press here 
    } 

我正在创建一个游戏,其中用户的反应非常重要。我怎样才能完全消除这个延迟?上面的代码不起作用。我也尝试覆盖processKeyEvent没有运气。

回答

2

这些事件是由JVM /操作系统生成的,除非您指示用户更改按键延迟/按键重复设置,否则恐怕需要做更多的工作。

我建议你创建一个Timer,以正确的速率触发事件,启动和停止计时器keyPressed/keyReleased

+0

有没有更简单的方法? – David

+0

@David:不要这么想 - 我认为aioobe是正确的,因为它没有任何解决方法,因为它都是基于操作系统的。 – Nightfirecat

+1

请注意,此方法仅适用于Windows,因为它会生成多个keyPressed事件(按住按键)并且只有一个keyReleased事件(释放按键时)。不过,我相信其他操作系统会以重复频率频率产生keyPressed/keyReleased事件对,这会破坏使用Timer的目的。我还没有看到针对此问题的独立平台很好的解决方案。 – camickr