Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

JTableのEnterキーイベントのアクションをオーバーライドしたい

ローカルでプリンタ制御して帳票を出すのがシステム要件の為、数年ぶりにJavaのSwingを使ってシステムを作ることになりまんた。

JTableのデフォルトはEnterを叩くと次の行にカーソルが移動する仕組みになっていた。だが、個人的には選択行のデータを親画面に返してモーダルを閉じるということをやりたいので、Enterキーに相当するActionを書き換える必要があった。

ぐぐったら早速見つかった。

Re: How to change JTable keys?

JTable table = ...;

Action action = new AbstractAction() {
   public void actionPerformed(ActionEvent e) {
      System.out.println("My Action Performed");
   }
};
table.getActionMap().put("MY_CUSTOM_ACTION", action);
table.getInputMap().put(
            KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false),
            "MY_CUSTOM_ACTION");

なるほどなぁ。自前でアクションを用意して、そいつをアクション一覧に登録する。

で、登録したアクションをキーイベントにバインドさせるわけか。

こういう無名クラスを見るのは久しぶりだけど、使い方によっては初期化もメソッドもいっぺんに定義できるしスコープも切れるので、便利だなぁ。