フォーカスの有無を検知するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:制御系

フォーカスの有無を検知するには

【概要】

画面にフォーカスがあたっているかどうかを検知するには、どうしたら良いでしょうか?

PROCESSINGで実行結果ウィンドウにフォーカスがあたっているかどうかを検知するには、以下の2通りの方法があります。

  • focusedシステム変数を利用する
  • PROCESSINGが持つFrame情報から取得する

単純にフォーカスがあたっているかどうかを知りたいだけなら、focusedシステム変数を利用するのが一番簡単です。

 

【詳細】

focusedシステム変数を利用する

PROCESSINGが持つfocusedシステム変数を調べると、実行結果ウィンドウにフォーカスがあたっているかどうかが判ります。

focusedシステム変数が true なら当たっている、falseなら当たっていません。

ただしfocusedシステム変数は、アプリケーション開始直後はfalseを示します。画面にウィンドウが表示されてからしばらく経過して、始めてtrueになります。

アプリケーション開始直後から、厳密にフォーカスを検知したい場合には不向きな所がありますので注意してください。

 

PROCESSINGが持つFrame情報から取得する

PROCESSINGはその内部に、JavaのFrameオブジェクトを持っています。そのFrameオブジェクトを取り出して、Frameクラスが持つisFocused()メソッドを利用すれば、フォーカスの有無が判ります。

focusedシステム変数を利用するのに比べて面倒くさいですが(汗)、アプリケーション開始直後のフォーカスの有無を、focusedシステム変数よりも正確に検知できます。

 

【関連記事】

  • なし

 


サンプルプログラム

フォーカスを検知する例:

実行結果ウィンドウにフォーカスがある時とない時で、表示する絵を切替えます。

<出力サンプル>

(画像URL:illust-AC 様:しのみさん)


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。