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");
とダミーを登録すると、無効に出来る。
[通知用URL]
Tweet
最終更新時間:2010年03月15日 22時16分26秒