トップ 一覧 置換 検索 ヘルプ RSS ログイン

InputMap と ActionMap を使ったイベントの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
ActionListener#actionPerformed で ActionEventを取得する以外に
InputMap と ActionMap によるキーイベントの取得方法がある。

AbstractAction クラスを継承してアクションクラスを生成する
 class TestAction extends AbstractAction {
   public void actionPerformed(ActionEvent e){
     System.out.println("test");
   }
 }

キーストロークとアクションをマッピングする
 KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
 getInputMap().put(tab, "test");
 getActionMap().put("test", new TestAction());


○親と子コンポーネントで同じイベントを処理する場合
 getInputMap()
を
 getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
とすると、親と子コンポーネントにフォーカスがあるときのインプットマップを取得できる。

!swing 標準のstrokeを無効にする
 getInputMap().put(tab, null);
 または
 getInputMap().remove(tab);
で無効に出来るはずだが、うまく行かないことがある。
  getInputMap().put(tab, "none");
とダミーを登録すると、無効に出来る。
{{category2 プログラミング言語,Java}}