Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
KeyListener多久检查一次键盘输入?(JavaGUI)_Java_User Interface_Awt_Keylistener - Fatal编程技术网

KeyListener多久检查一次键盘输入?(JavaGUI)

KeyListener多久检查一次键盘输入?(JavaGUI),java,user-interface,awt,keylistener,Java,User Interface,Awt,Keylistener,我正在编写一个程序,其功能包括检查用户输入是否为箭头键之一,并相应地移动屏幕精灵 我将KeyListener接口用于我称为ArrowListener的内部类。目前,我在keyPressed()中有代码,可以在屏幕上移动精灵 我想知道我的ArrowListener类检查键盘输入的频率,因为我在更大的组件类中有另一个方法,它每100毫秒调用一次repaint()。如果KeyListener类检查用户输入的频率大于或小于此频率,我也将更改重绘频率 编辑: 我意识到KeyListener不会定期检查/轮

我正在编写一个程序,其功能包括检查用户输入是否为箭头键之一,并相应地移动屏幕精灵

我将KeyListener接口用于我称为ArrowListener的内部类。目前,我在keyPressed()中有代码,可以在屏幕上移动精灵

我想知道我的ArrowListener类检查键盘输入的频率,因为我在更大的组件类中有另一个方法,它每100毫秒调用一次repaint()。如果KeyListener类检查用户输入的频率大于或小于此频率,我也将更改重绘频率

编辑:


我意识到KeyListener不会定期检查/轮询键盘输入,而是处理来自键盘的中断。不过,如果我按住键盘上的一个键5秒钟,KeyListener会处理多少次中断?

看起来我搞错了;你要找的是;这些功能允许您在按键时只执行一次
ActionListener

我明白了,因此KeyListener接受中断而不是轮询键盘。尽管如此,当我按下,比如说,向上箭头键并保持5秒钟时,会发生多少中断?我明白你的意思,但我在我的程序上尝试了这一点(即按住向上箭头键5秒钟),精灵移动了不止一次。它一直向上移动,直到我释放了向上箭头键。如果您只想在按钮按下一次时处理某个操作,我已经用您应该使用的内容编辑了我的帖子,而不是
keylister
。这是操作系统的工作方式,第一次按键和第二次按键之间的延迟总是延迟的,其他按键事件的延迟较小,您无法更改其工作方式-但是,您可以设置一个标志(或一系列标志)来指示哪些按键当前处于活动状态,而不是监视按键状态。在您的情况下,我可能会尝试使用某种
堆栈
,并将“按下”和“释放”操作添加到其中,然后在循环中,您可以随意弹出任意多个操作,并以任何方式处理它们-但在十分之一秒的时间内,不确定是否值得。它接收事件。