Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Java键向下快速单击_Java_Gwt_Key - Fatal编程技术网

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
        }
    }
}