注意
フォーカスイベント処理の延長上では、フォーカス遷移処理がうまくできません
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)にて、選択状態を解除する処理を実装することにより解決できます。