Frame.addKeyListener(KeyListener e)では取得できない!
とりあえず真っ先に思いつく方法としてキーイベントを使ってみる方法があると思うんですが・・・.
ここを見る限り,フレーム上にキーリスナを取得しそうなコンポーネントがあると,もうだめ.
JFrame#processKeyEventをオーバーライドしてみるが・・・しかし・・・駄目.
このメソッドでキー入力は全て処理しているはずですから,これをオーバーライドすれば良いに違いない!
というわけで,オーバーライドしてショートカット処理をしてみたのですが,どうも呼ばれません.
デバッガで確認済み.ここに通知が来ないということなんですね・・・.
InputMapを使え!
こちらを見てください.これのとおり,InputMapとActionMapを組み合わせて使えば,出来るのではないかな・・・と.
とりあえず実装してみました.
・・・お,出来る!カンペキです.
ただし,問題点があって,ShiftやAltなどの修飾キーだけでは使えません・・・.
これは仕方が無いですね・・・.逆に修飾キーが無くても使えるので,まあ十分でしょう.
ショートカットキーに必ず修飾キーをつけなくちゃいけないというのも面倒ですから.