Swing Application Frameworkのリソースファイルで使用可能な表現一覧

S2Swingもリリースしたことだし、Swingについてどんどん書いていこうと思います。

Swing Application FrameworkにはResourceMapという機能があり、リソースをpropertiesファイルに書いておいてコンポーネントに自動インジェクションしたり、手動でルックアップしたりできます。

実は、このリソースファイルで定義できるオブジェクトの種類は結構多彩なんですが、あまり知られていないと思うので、以下に一覧を載せます。

種類 記述例 説明
文字列 abcde 文字列
文字列参照 ${button1.text} ${}を使って、他の位置で定義された文字列を参照できる
数値 123 数値
Boolean true "true", "on", "yes"のいずれかでtrueと評価される。それ以外はfalse
MessageFormat {0}, {1} MessageFormatオブジェクト
URL / URI http://d.hatena.ne.jp/ URL / URI
Color 255,0,0 "#RRGGBB", "#AARRGGBB", "R,G,B", "R,G,B,A"の書式が使用可能
Icon images/save.png 指定されたパスの画像によるImageIcon
Image images/splash.jpg 指定されたパスの画像
Font Dialog-PLAIN-12 "face-STYLE-size"。java.awt.Font.decode()と同じ書式
KeyStroke control S javax.swing.KeyStroke.getKeyStroke()と同じ書式
Dimension 320,240 "width,height"
Point 100,50 "x,y"
Rectangle 0,0,200,100 "x,y,width,height"
Insets 4,8,4,8 "top,left,bottom,right"
EmptyBorder 2,2,2,2 "top,left,bottom,right"

表を見ると、UIの構築にフォーカスした便利な記法がいろいろサポートされていることが分かります。リソースファイルをCSS的に使えるイメージですね。

実際のリソースファイルは、例えば以下のような感じになります。

open.Action.text = &Open...
open.Action.accelerator = control O
open.Action.icon = images/open.png

label1.text = Some Big Label
label1.font = Arial-PLAIN-32
label1.foreground = #0000FF
label1.focusable = false