Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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_Applet - Fatal编程技术网

在java中如何使用特定时间的循环?

在java中如何使用特定时间的循环?,java,applet,Java,Applet,我想做的是在特定的时间内执行循环,比如10秒,在这段时间内,我想计算在applet窗口中单击鼠标的次数 像这样的 for(10 seconds) { a=getClickCount() } texfield.setText(+a); 我面临的问题是,当我停止单击时,count的值开始增加,然后它开始逐秒增加,直到现在我一直在使用 纳米时间方法。如果我是你,我会实现一个 设置标志以表示开始计数并存储当前时间戳,然后定期检查当前时间并将当前时间的秒数与保存的时间戳进行比较。在指定时间内,

我想做的是在特定的时间内执行循环,比如10秒,在这段时间内,我想计算在applet窗口中单击鼠标的次数

像这样的

for(10 seconds)
{
    a=getClickCount()
}

texfield.setText(+a);
我面临的问题是,当我停止单击时,count的值开始增加,然后它开始逐秒增加,直到现在我一直在使用
纳米时间方法。

如果我是你,我会实现一个

设置标志以表示开始计数并存储当前时间戳,然后定期检查当前时间并将当前时间的秒数与保存的时间戳进行比较。在指定时间内,每次成功单击都可以增加一个整数值。然后从MouseListener对象调用getClickCount()


当当前时间比存储时间晚10秒时,将标志设置为false

你能用线吗?像这样:

static final int SLEEP_MILLIS = 1000;//1 sec

Thread counter = new Thread("count click thread") {

    public void run() {
        int nbMillis = 10000; //10sec
        do {
            a = getClickCount();
            refreshView();
            Thread.sleep(SLEEP_MILLIS);
            nbMillis -= SLEEP_MILLIS;
        } while(nbSec>0);
    }
};

counter.start();
refreshView()包含编辑文本的代码。
SLEEP\u milis包含刷新时间间隔。

我认为实现这一点的最佳方法是使用鼠标和鼠标侦听器(正如Chris Cooney提到的)

当您想开始计数10秒时,设置计时器并将侦听器注册到它的事件。
打开表示应该计算点击次数的
布尔值。
只要
boolean
标志设置为
true
,鼠标侦听器就会开始计数


一旦计时器的事件激活了您的侦听器,您就可以关闭
布尔值
标志并获取实际的点击次数。

我已经实现了MouseListener,并且上面的代码已经在“public void mouseClicked”标记中。您是否尝试过使用我建议的时间戳和布尔值标记方法?