ページの先頭行へ戻る
Interstage Studio J Business Kit GUIライブラリ ユーザーズガイド
FUJITSU Software

1.2.5 フォーカス制御

注意

フォーカスイベント処理の延長上では、フォーカス遷移処理がうまくできません

GUIコンポーネントでは、1つのユーザの操作に対して多くのイベントが発生します。このため、フォーカスイベント処理の延長上でjava.awt.ComponentのrequestFocus()メソッドなどを実行してフォーカス遷移処理を行うと、フォーカス遷移処理に矛盾をきたす場合があります。

このような場合は、java.awt.EventQueueのinvokeLaterメソッドを使用してくたさい。AWTイベントディスパッチスレッドは、現在キューに残っているイベントの処理をすべて完了した後に、invokeLaterメソッドで指定したユーザ定義の処理を実行させるようにします。これにより、ユーザが定義したフォーカス遷移処理が正しく行われるようになります。

注意

ウィンドウ表示時に、GUIコンポーネントにフォーカスを設定することができません

java.awt.event.WindowListenerのwindowActivateメソッドで、ウィンドウ内のGUIコンポーネントに対してrequestFocusメソッドを実行しても、Javaのデフォルトのフォーカス制御処理によってウィンドウ内の先頭のGUIコンポーネントにフォーカスを設定しなおされてしまいます。

このような場合は、java.awt.EventQueueのinvokeLaterメソッドを使用してください。AWTイベントディスパッチスレッドは、現在キューに残っているイベントの処理をすべて完了した後に、invokeLaterメソッドで指定したユーザ定義の処理を実行させるようにします。これにより、ユーザが定義したフォーカス遷移処理が正しく行われるようになります。

注意

フォーカスを失っても文字列が選択状態のままになります

フォーカスを失ったときに選択状態が残るのは、テキスト入力系コンポーネントの仕様です。

com.fujitsu.jbk.gui.JFFieldStringなどのテキスト入力系コンポーネントは、フォーカスを失っても選択状態が保持されます。

フォーカスを失ったときに選択状態を解除したい場合は、java.awt.event.FocusListenerのfocusLost(java.awt.event.FocusEvent)にて、選択状態を解除する処理を実装することにより解決できます。