トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF 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");

とダミーを登録すると、無効に出来る。

[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2010年03月15日 22時16分26秒