Swing/DispatchEvent のバックアップ差分(No.6)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/DispatchEvent へ行く。
- 1 (2008-02-11 (月) 21:32:38)
- 2 (2008-02-12 (火) 10:05:25)
- 3 (2008-02-13 (水) 17:25:14)
- 4 (2008-12-17 (水) 01:57:15)
- 5 (2011-04-22 (金) 18:01:46)
- 6 (2014-01-14 (火) 13:57:01)
- 7 (2015-02-10 (火) 15:24:12)
- 8 (2015-03-20 (金) 15:29:27)
- 9 (2016-12-30 (金) 18:45:32)
- 10 (2017-11-02 (木) 15:32:16)
- 11 (2017-12-12 (火) 13:41:44)
- 12 (2019-12-08 (日) 15:30:19)
- 13 (2021-06-08 (火) 11:23:03)
- 14 (2024-02-02 (金) 11:43:40)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:AWTEventを取得して入力イベントを監視 #navi(../) RIGHT:Posted by [[aterai]] at 2008-02-11 *AWTEventを取得して入力イベントを監視 [#ad33b611] AWTEventを取得して、マウスやキーボードの入力イベントを監視します。 #tags(AWTEvent, Toolkit, AWTEventListener) RIGHT:Posted by &author(aterai); at 2008-02-11 * AWTEventを取得して入力イベントを監視 [#ad33b611] `AWTEvent`を取得して、マウスやキーボードの入力イベントを監視します。 -&jnlp; -&jar; -&zip; - &jnlp; - &jar; - &zip; //#screenshot #ref(http://lh6.ggpht.com/_9Z4BYR88imo/TQTLPUOE2MI/AAAAAAAAAXQ/5qrFGk7E5GM/s800/DispatchEvent.png) #ref(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTLPUOE2MI/AAAAAAAAAXQ/5qrFGk7E5GM/s800/DispatchEvent.png) **サンプルコード [#fc4a223d] #code{{ ** サンプルコード [#fc4a223d] #code(link){{ private static int DELAY = 10*1000; //10s private final javax.swing.Timer timer = new javax.swing.Timer(DELAY, new ActionListener() { public void actionPerformed(ActionEvent e) { @Override public void actionPerformed(ActionEvent e) { setTestConnected(false); Toolkit.getDefaultToolkit().removeAWTEventListener(awtEvent); timer.stop(); } }); private final AWTEventListener awtEvent = new AWTEventListener() { public void eventDispatched(AWTEvent e) { @Override public void eventDispatched(AWTEvent e) { if(timer!=null && timer.isRunning()) { //System.out.println("timer.restart()"); timer.restart(); } } }; JButton button = new JButton(new AbstractAction("接続") { public void actionPerformed(ActionEvent e) { JButton button = new JButton(new AbstractAction("Connect") { @Override public void actionPerformed(ActionEvent e) { setTestConnected(true); Toolkit.getDefaultToolkit().addAWTEventListener(awtEvent, AWTEvent.KEY_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK); timer.setRepeats(false); timer.start(); } }); }} **解説 [#rdf0df57] 上記のサンプルでは、一定時間(10秒)、マウスやキーボードからの入力が無い場合、接続(ダミー)を切るようになっています。 ** 解説 [#rdf0df57] 上記のサンプルでは、一定時間(`10`秒)、マウスやキーボードからの入力が無い場合、接続(ダミー)を切るようになっています。 //以下のように、AWTEventListenerを使っても同様((イベントマスクは適当に追加修正してください。))のタイムアウト処理が可能です。 //以下のように、`AWTEventListener`を使っても同様((イベントマスクは適当に追加修正してください。))のタイムアウト処理が可能です。 //#code{{ //Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { // public void eventDispatched(AWTEvent e) { // @Override public void eventDispatched(AWTEvent e) { // System.out.println(e); // } //}, AWTEvent.KEY_EVENT_MASK + AWTEvent.MOUSE_EVENT_MASK); //}} ---- [http://tips4java.wordpress.com/2008/10/24/application-inactivity/ Application Inactivity « Java Tips Weblog]を参考にして、Toolkit.getDefaultToolkit().getSystemEventQueue().push(eventQueue)は使用せず、以下のようにToolkit.getDefaultToolkit().addAWTEventListener(AWTEventListener) を使う方法に変更しました。 -timerをtimer.setRepeats(false);でスタート(一回で終わる) -Toolkit.getDefaultToolkit().addAWTEventListenerで、AWTEventListenerを設定 -AWTEventが発生した時に timer.restart();でタイマーをリセット -時間がきたらToolkit.getDefaultToolkit().removeAWTEventListenerでAWTEventを取り除く [http://tips4java.wordpress.com/2008/10/24/application-inactivity/ Application Inactivity « Java Tips Weblog]を参考にして、`Toolkit.getDefaultToolkit().getSystemEventQueue().push(eventQueue)`は使用せず、以下のように`Toolkit.getDefaultToolkit().addAWTEventListener(AWTEventListener)`を使う方法に変更しました。 **参考リンク [#db411231] -[http://tips4java.wordpress.com/2008/10/24/application-inactivity/ Application Inactivity « Java Tips Weblog] - `timer`を`timer.setRepeats(false);`でスタート(一回で終了する) - `Toolkit.getDefaultToolkit().addAWTEventListener`で、`AWTEventListener`を設定 - `AWTEvent`が発生した時に`timer.restart();`でタイマーをリセット - 時間がきたら`Toolkit.getDefaultToolkit().removeAWTEventListener`で`AWTEvent`を取り除く **コメント [#k0faafe0] ** 参考リンク [#db411231] - [http://tips4java.wordpress.com/2008/10/24/application-inactivity/ Application Inactivity « Java Tips Weblog] ** コメント [#k0faafe0] #comment