2011-12-13 2 views
1

私が書いているプログラムでは、ユーザーがテキストフィールドにテキストを入力したかどうかを知る必要があります(ただし、現在入力していません)。ユーザーが現在KeyListenerを介して入力しているかどうかを確認できるテキストフィールドのアクションリスナーがありますが、ユーザーが入力を停止してもテキストボックスにテキストを入力したかどうかを確認する方法はありますか?Java - ユーザーがテキストフィールドにテキストを入力したが、アイドル状態になっているかどうかを確認するにはどうすればよいですか?

ありがとうございます!

答えて

3

Swing timerを使用して、フィールドの最後のキーが押されてからしばらく時間が経過しているかどうか定期的に確認できます。

など。キーを押すたびに、タイムスタンプを変数に保存します。タイムスタンプが、例えば、より古いかどうかをチェックするようにタイマーを設定します。 10秒。

+2

タイムスタンプを追跡する必要はありません。ドキュメントが変更されるたびにタイマーを再起動するだけです。タイマーが起動すると、指定した期間内に文書が変更されたことがわかり、何らかのアクションを実行できます。 – camickr

1

はい、あります。あなたは、ポーリングを維持するためにバックグラウンドで実行される単純なスレッドを添付するか、スイングでtimerを利用することもできます。

0

イベントのテキストフィールドの文字数を確認してください。値が0より大きい場合、ユーザーはテキストを入力しました。あなたがキーリストを聞くときにも、そのタイムスタンプを取る。それが3秒間何かよりも古いかどうかを確認すると、ユーザーはアイドル状態になります。ほとんどの場合、時間を監視するスレッドが必要になります。スイングタイマーは、主にGUI関連の機能です。したがって、IMサーバーでこれを使用している場合は、通常の汎用タイマーを使用する必要があります。

関連する問題