我想要做的是在特定的时间(如 10 秒)内执行循环,在此期间我想计算在小程序窗口中单击鼠标的次数。
像这样的东西
for(10 seconds)
{
a=getClickCount()
}
texfield.setText(+a);
我面临的问题是当我停止点击时计数的值开始增加,然后它开始逐秒增加,直到现在我一直在使用 nanoTime 方法。
如果我是你,我会实现一个MouseListener。
设置一个标志来象征计数的开始并存储当前时间戳,然后定期检查当前时间并将当前时间的秒数与您保存的时间戳进行比较。在规定时间内每次成功点击都会增加一个整数值。然后,您只需从 MouseListener 对象调用 getClickCount()。
一旦当前时间比存储时间晚 10 秒,则将该标志设置为 false。
我认为实现这一点的最佳方法是使用Timer和 MouseListener(正如 Chris Cooney 所提到的)。
当您想开始计数 10 秒时 - 设置计时器并将侦听器注册到它的事件。
打开boolean
表示您应该计算点击次数的选项。
只要boolean
标志设置为,并且在您的 MouseListener 中开始计数true
。
一旦 Timer 的事件激活您的侦听器 - 您可以关闭boolean
标志并获取实际的点击次数。
你可以使用线程吗?像这样:
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_MILLIS 包含刷新时间间隔。