私がやりたいのは、10秒などの特定の時間ループを実行し、その間にアプレットウィンドウでマウスがクリックされた回数を計算したいということです。
このようなもの
for(10 seconds)
{
a=getClickCount()
}
texfield.setText(+a);
私が直面している問題は、クリックを止めると count の値が増加し始め、それから秒単位で増加し始めることです。今までは nanoTime メソッドを使用してきました。
スレッドを使用できますか?このような:
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 には、リフレッシュ時間間隔が含まれています。
私があなただったら、MouseListenerを実装します。
カウントの開始を象徴するフラグを設定して現在のタイム スタンプを保存し、現在の時刻を定期的に確認して、現在の時刻の秒数と保存したタイム スタンプを比較します。割り当てられた時間内にクリックが成功するたびに、整数値が増加します。次に、MouseListener オブジェクトから getClickCount() を呼び出すだけです。
現在の時刻が保存された時刻より 10 秒遅れたら、フラグを false に設定します。
これを実装する最良の方法は、 Timerと MouseListenerを使用することだと思います(Chris Cooney が述べたように)。
10 秒のカウントを開始するには、タイマーを設定し、リスナーをそのイベントに登録します。クリック数をカウントする必要があることを示す を
オンにします。そして、フラグが に設定され
ている限り、MouseListener でカウントを開始します。boolean
boolean
true
boolean
タイマーのイベントがリスナーをアクティブにしたら、フラグをオフにして実際のクリック数を取得できます。