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 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



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

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