Sample : Key連打による処理の多重起動の抑制を行うFocusManager
実装サンプル:なし
時間がかかる処理が設定されたButton上でKeyを連打された場合に、 処理の多重起動の抑制を行う機能をFocusManagerで実装したSampleです。
仕組みとしては以下の様な仕組みになっています。
KeyEventを使った仕組み
- 2回目以降にKeyEventが発生した時間と、それがdispatchされる時間には差がある。
- その差が発生する原因は「時間がかかる処理」が一回目のdispatchの後で発生し、 2回目のdispatchが呼ばれるタイミングはその後となるため。
詳しい説明は実際のサンプルのJavaDocをご覧ください。
[サンプル提供]:
jp.ne.mki.wedge.education.focusmanager.RestrictContinuousKeyEvent
■注意
時刻の差を利用した仕組みのため、実行マシン上で 「時間がかかる処理中にシステム時刻の変更が行われる」 等の操作があった場合にどのような動作をするかはわかりません&検証しておりません。
時刻の差を利用した仕組みのため、実行マシン上で 「時間がかかる処理中にシステム時刻の変更が行われる」 等の操作があった場合にどのような動作をするかはわかりません&検証しておりません。