2

維持しているかなり大きなswingアプリケーションがあり、タイムアウト機能を追加する必要があります。基本的に、ユーザーがアプリケーションを一定時間操作しなかった場合、アプリケーションは特定のアクション(たとえば、シャットダウン)を実行する必要があります。 )。

このアプリケーションはすでに作成されているため、すべてのマウスリスナー/キーボードリスナー/あらゆる種類の入力リスナーに、ユーザーが開始したイベントが最後に発生した時間を格納する特定のクラス/インターフェイスを拡張/実装することは、克服できないタスクになります。 。

スイングには、このようなもののためにすでに何らかのユーティリティが組み込まれていますか?すべてのマウス/キーボードリスナーを変更する以外に、この機能を実装するための良い方法は何でしょうか?

4

2 に答える 2

6
// the event mask; adjust as desired
long eventMask = 
    AWTEvent.KEY_EVENT_MASK |
    AWTEvent.MOUSE_EVENT_MASK |
    AWTEvent.MOUSE_MOTION_EVENT_MASK |
    AWTEvent.INPUT_METHOD_EVENT_MASK;

// install a listener for receiving global events
Toolkit.getDefaultToolkit().addAWTEventListener(yourListenerInstance, eventMask);
于 2012-08-09T19:57:52.533 に答える
2

これは適切なようですが、私はこれを試していません。

http://tips4java.wordpress.com/2009/08/30/global-event-listeners/

これは、AWTEventListenerの使用と、KeyboardFocusManagerへのフックに焦点を当てています。

于 2012-08-09T19:57:44.957 に答える