0

JRadioButtonのTabキーの動作を再定義して、他のGUIアプリケーションのラジオボタンのように動作するようにしようとしています。

  • 矢印キーは、ButtonGroupのラジオボタンを循環します(これは機能しています)
  • タブは、グループ内の最後のラジオボタンの次のコンポーネントにフォーカスを移動します(問題領域)

フォーカスする適切なコンポーネントとすべてを見つけるために必要な手順を実行するアクションがありますが、InputMapにエントリを追加しても機能しないようです。

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "jumpNext");
getActionMap().put("jumpNext", new JumpNextAction());

アクションが実行されないため、Tabの入力マップのエントリは無視されているようです。これはおそらく、KeyboardFocusManagerまたは関連するものが、コンポーネントの入力マップに到達する前にTabイベントを消費しているためだと思います。

この動作を停止し、代わりにカスタムTab動作を使用する方法についてのアイデアはありますか?

4

1 に答える 1

1

KeyboardFocusManagerが原因で、入力マップに到達しない可能性がありますが、下位レベルのkeyListenerを配置すると、イベントをインターセプトしてconsume()できるため、KeyboardFocusManagerはそれを処理しません。

または、ラジオボタンでJComponent.setFocusTraversalKeys()メソッドを呼び出して、デフォルトのタブキーを削除すると、inputmapが試みたように処理できる場合があります。

于 2010-01-13T18:46:10.430 に答える