Developer'sWorks
Tips

現在処理中のコンポーネントを取得する方法

現在処理中(フォーカス取得中)のコンポーネントをビジネスルールから取得するには
JComponent comp = getCurrentComponent();
のメソッドを使用します。

このコンポーネントの物理名や論理名、アイテムなど、製品独自の情報を取得したい場合には、 jp.ne.mki.wedge.run.client.event.ComponentInterface
にJComponentコンポーネントをキャストすることにより取得が可能です。

また、次にフォーカス取得予定コンポーネント を取得することも可能です
使用するメソッドは
JComponent comp = getExpectNextComponent();
になります。
getExpectNextComponent() で返されるコンポーネントは、マウスクリック もしくは KeyMap(Memonic含む) でフォーカス遷移を行おうとした場合、クリック対象のコンポーネント になります。

具体例では、以下のように テキストフィールド と、 ボタンがある画面があるとします。
ボタンには、「F1」のKeyMapが登録されています。

テキストフィールドにフォーカスが当たっている状態にて
  1. [F1]キーを押された もしくは ボタンをマウスでクリックした場合
    (1)TextField After実行 [Current=TextField , ExpectNext=ButtonF1]
    (2)ButtonF1 Before実行 [Current=ButtonF1 , ExpectNext=ButtonF1]
    (3)ButtonF1 After実行 [Current=ButtonF1 , ExpectNext=ButtonF1]
  2. [Tab]キーを押された場合
    (1)TextField After! [Current=TextField , ExpectNext=TextField]
となります。つまり、KeyMap もしくは マウスクリックの場合には次にフォーカスが当たるコンポーネントを 予測できるため、getExpectNextComponent() にフォーカス取得予定のコンポーネントが取得可能になります。
逆に、Tabキーによるフォーカス遷移では、次にフォーカス取得するコンポーネントが予測できないため、 getCurrentComponent と同じコンポーネントが返されます。

-- 2003/07/29 Update