Java键向下快速单击
我有一个小问题。但让我们从代码开始:Java键向下快速单击,java,gwt,key,Java,Gwt,Key,我有一个小问题。但让我们从代码开始: @Override protected void onKeyDown(NativeEvent e) { count ++; System.out.println(count); } 如你们所见,我按住键盘上的键,立即打印变量。经过一段时间后,count获取Integer.MAX\u值 输出(在按键上发出垃圾邮件后): 我的问题-是快速点击向下键吗?以及我如何克服这些胡说八道。谢谢你的帮助 编辑 我想使用定时器类 编辑 请注意,此错误仅针对向下箭
@Override
protected void onKeyDown(NativeEvent e) {
count ++;
System.out.println(count);
}
如你们所见,我按住键盘上的键,立即打印变量。经过一段时间后,count
获取Integer.MAX\u值
输出(在按键上发出垃圾邮件后):
我的问题-是快速点击向下键吗?以及我如何克服这些胡说八道。谢谢你的帮助
编辑
我想使用定时器类
编辑
请注意,此错误仅针对向下箭头键出现,向上键看起来一切正常。当您要向容器添加向下键
侦听器时,当您在该容器上按下向下键
时,它将高速触发事件,正如您所说的计数++
显著地获得了整数.MAX_值
,因此如果您防止了这个问题,您可以使用线程.sleep
几乎大约20ms
等等。。。那么它会很好地工作
编辑:
private boolean isDown;
public void onKeyDown(Event event) {
isDown = true;
new Thread(new MyThread()).start();
}
public void onKeyUp(Event event) {
isDown = false;
}
private class MyThread implements Runnable {
public void run() {
while (isDown) {
// do your work
}
}
}
希望它能帮助你 onKeyUp
用于向上的箭头,我需要使用onKeyDown
用于向下的箭头您使用的是哪个框架?听起来像GWT.GWT framework,这很重要吗?@J.Doe看起来你要实现类似于游戏的东西,不是吗?是的,类似于游戏的东西,应该是这样:protectedvoidonkeydown(NativeEvent e){count++;Thread.sleep(20);System.out.println(count);}
@Bahramdun-Adil[link],也使用计时器进行了尝试。Useless@J.Doe是这样的。我发布了一条评论,说在GWT Framework中不可能使用线程。为什么你不这样做,你可以在按键时创建线程来做你想做的事情,但是当你想刷新UI或更改UI时,你可以在主线程(UI线程)中做。
private boolean isDown;
public void onKeyDown(Event event) {
isDown = true;
new Thread(new MyThread()).start();
}
public void onKeyUp(Event event) {
isDown = false;
}
private class MyThread implements Runnable {
public void run() {
while (isDown) {
// do your work
}
}
}