SQLの窓

2009年11月06日


Java : InputMap を使って JFrame 上のキーを全て処理する

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);


posted by lightbox at 2009-11-06 14:58 | java : Swing | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり