フォーカスポリシー

このドキュメントでは、フォーカスポリシー についての動作仕様についての説明になります。
フォーカスポリシーにて管理する事項は
・最初にフォーカスを取得するコンポーネントの設定
・フォーカス移動順の設定
になります。

1. 最初にフォーカスを取得するコンポーネントの設定

最初にフォーカスを当てるコンポーネントを明示的に指定する方法としては以下の2種類あります。

画面イベントと、フォーカス設定 のタイミングは、
  1. LOAD処理
  2. フォーカスポリシーによる、フォーカス設定
  3. OPEN処理
の順序で実行されますので、OPEN処理 では 設定できません。(フォーカス移動処理が設定されていても動きません)

「CAMC:フォーカス移動順 タブ にて一番最初の行に設定する」 場合
フォーカス設定時には、対象コンポーネントが 使用可(isEnable()) かつ 表示(isVisible()) のものであるかどうか判断し、 この条件に満たされない場合には、 Swing標準(javax.swing.LayoutFocusTraversalPolicy)の コンポーネントに対してフォーカス設定 されます。
LayoutFocusTraversalPolicy では、左上からみて一番最初のコンポーネントが取得されます。
OPEN処理時に 最初にフォーカスを取得するコンポーネント に対し、使用不可(disable) の設定がされると 起動時には 使用不可コンポーネントにフォーカスが当たった状態になっていまいます。
そのため、使用不可(disable) の処理は LOAD処理時 に設定するのをお勧めします。

「LOAD処理 の実行リストにて フォーカス設定(SetFocus) 処理を追加する 」方法の場合、
使用可(isEnable()) 、 表示(isVisible()) のチェックは行わず、指定のコンポーネントに対してフォーカス設定処理を行います。
正しいコンポーネントに対して フォーカス設定(SetFocus) 処理を行うようにして下さい。

 

2. フォーカス移動順の設定

フォーカス移動順 は CAMC:フォーカス移動順 タブにて設定された順序で動作します。
設定が無い場合には Swing標準(javax.swing.LayoutFocusTraversalPolicy)の動きになります。

アプリケーション実行中に、動的に フォーカス移動先を変更 したい場合には、GUIコンポーネント を FocusEventInterface に キャストし、setNextFocus などのメソッドより設定が可能です。
詳しくは クライアントビジネスルール の 2-2. GUI部品からの情報取得方法 を参照して下さい。

 

3. フォーカスポリシーの入替

フォーカスポリシーを入れ替える事が可能です。
フォーカスポリシーは java.awt.FocusTraversalPolicy のクラスを継承したものであれば設定が可能です。
反映方法は

import java.awt.FocusTraversalPolicy;
import java.awt.DefaultKeyboardFocusManager;
・・・(省略)・・・

FocusTraversalPolicy myPolicy = new MyFocusTraversalPolicy();
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalPolicy(myPolicy);
になります。詳しくは JDK1.4 APIドキュメントを参照して下さい。

フォーカスポリシーに関しては JDKの仕様に基づきますので、使用方法やお問合せには応じられない場合があります。 予めご了承ください。