“键盘”;持有;JavaSwing中的事件?

“键盘”;持有;JavaSwing中的事件?,java,swing,keylistener,Java,Swing,Keylistener,我发现在任何使用键侦听器的类中都要实现的方法包括keyPressed、keyprelease和keyDown,但是我如何让它在键保持按下的同时连续发生一些事情呢?意思是有没有一种方法可以实现“keyhold”类型的场景 一般有两种机制 按住键时,将重复调用按下的键,直到松开键为止。但是,在第一次按键和重复按键之间通常会有一个短暂的延迟 或者,您可以设置一个标志,指示他们的键已按下,并在释放时重置标志 可能最简单的解决方案是使用某种列表contains al,即当前按下的虚拟键代码。然后,您只需要

我发现在任何使用键侦听器的类中都要实现的方法包括keyPressed、keyprelease和keyDown,但是我如何让它在键保持按下的同时连续发生一些事情呢?意思是有没有一种方法可以实现“keyhold”类型的场景

一般有两种机制

按住键时,将重复调用按下的
键,直到松开键为止。但是,在第一次按键和重复按键之间通常会有一个短暂的延迟

或者,您可以设置一个标志,指示他们的键已按下,并在释放时重置标志

可能最简单的解决方案是使用某种
列表
contains al,即当前按下的虚拟键代码。然后,您只需要检查此列表,看看它是否包含您需要使用的虚拟密钥代码,并在它包含时采取适当的操作


这让我想到一个警告:不要从任何线程(事件调度线程除外)交互或更改任何UI组件有两种通用机制

按住键时,将重复调用按下的
键,直到松开键为止。但是,在第一次按键和重复按键之间通常会有一个短暂的延迟

或者,您可以设置一个标志,指示他们的键已按下,并在释放时重置标志

可能最简单的解决方案是使用某种
列表
contains al,即当前按下的虚拟键代码。然后,您只需要检查此列表,看看它是否包含您需要使用的虚拟密钥代码,并在它包含时采取适当的操作


这让我想到一个警告,不要从任何线程交互或更改任何UI组件,事件调度线程除外

s.....ssssssssssssssssssssssssss

keyTyped
方法在按键按下时连续调用,初始延迟为:

s.....ssssssssssssssssssssssssss

不要使用键盘侦听器。Swing的设计目的是配合使用


我在这种情况下使用了一个摆动计时器,因为你现在可以完全控制重复率。您可以使用按键绑定启动计时器,并使用按键释放绑定停止计时器。Swing教程还有一节介绍如何使用计时器。

不要使用按键侦听器。Swing的设计目的是配合使用


我在这种情况下使用了一个摆动计时器,因为你现在可以完全控制重复率。您可以使用按键绑定启动计时器,并使用按键释放绑定停止计时器。Swing教程还有一个关于如何使用计时器的部分。

你是说
键入的
?不要使用
keyDown
。要尝试将System.out.println()添加到all KeyEvents中,请查看发生了什么,以获得更好的帮助,更快发布一个简短、可运行、可编译的JFrame,其中包含一个可聚焦的JComponents,该组件对KeyEvents做出反应您是指
keyTyped
?不要使用
keyDown
。要尝试将System.out.println()添加到all KeyEvents中,请查看发生了什么,以获得更好的帮助,更快发布一个简短、可运行、可编译的JFrame,其中包含一个可聚焦的JComponents,用于响应KeyEvents