C++ で作った Windows アプリケーションで言うところの、アクセラレータキー の処理なのですが、WEB 上の Java のサンプルはどうも違うようですし、 JDK のドキュメントの日本語も意味不明ですし、結局以下のようにすると フォーカスがウインドウ上のどこに居ても処理できます。 問題は、ユーザがコントロールからキーイベントを親に dispatchEvent していると、 処理が2回走るようなので・・・・両方使う場合は、どちらから来たか区別できるよう にする必要があります ( こちらに統一したほうが無難です )
AbstractAction esc_action = new AbstractAction() { public void actionPerformed(ActionEvent e) { System.out.println("ESCキーが押されました"); } }; InputMap imap = this.getRootPane().getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW ); imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "ESC"); this.getRootPane().getActionMap().put("ESC", esc_action);
|
【java : Swingの最新記事】
- Java + Swing : JTable に CSV フォーマットのテキストファイルを読み込む
- Swing の JTable に 1) WEBのJSON2次元配列。2) WEB の JSON配列 を取り込んで表示する( Google Gson と okhttp を使用 )
- Swing の JTable に 1) ローカルの CSV。2) WEB の CSV を取り込んで表示する
- Java : JDialog で モーダルダイアログ
- Eclipse( Pleiades ) Helios に、VisualEditor をインストールして、JFrame で実行するまでの全手順画像
- Java : WEB 上の XML を JTable に表示