先週に引き続き,今週もNimbus Look&FeelのベースとなるSynth Look&Feelについて紹介します。

その前に,簡単に先週のおさらいをしておきましょう。

Synth Look&FeelではXMLドキュメントを使用してアプリケーションの外観を設定することが可能です。XMLドキュメントのルート要素は<synth>要素になり,その子要素として<style>要素と<bind>要素を記述します。<style>要素で外観を設定し,<bind>要素によって設定した外観とアプリケーションの領域を結びつけていきます。

先週はフォント,色,空白領域の設定について解説しました。今週はボーダーや,背景イメージなどについて紹介していきます。

題材とするアプリケーションは先週と同じSynthSampleクラスです。

サンプルのソース (こちらからダウンロードできます)
SynthSample.java

イメージを利用したボーダーの設定

先週,背景色などを設定しないと,テキストフィールドやボタンがラベルと区別できないことを説明しました。実際,他のアプリケーションではテキストフィールドなどはどのようにラベルと区別しているのでしょう。

図1にMetal Look&Feelのラベルとテキストフィールドを4倍に拡大して示しました。

図1●Metal Look&Feelのラベルとテキストフィールド
図1●Metal Look&Feelのラベルとテキストフィールド

ラベルとテキストフィールドは背景色が異なります。文字のまわりが赤や青でにじんだようになっているのは,Java SE 6完全攻略第17回で紹介したサブピクセルのアンチエイリアスを行っているためです。

また,テキストフィールドはまわりを灰色線で囲んであることがわかります。また,下の部分だけ灰色の線の下に白い線が描画されています。

この白い線によりテキストフィールドのまわりがくぼんで見えるようになっているのです。このまわりの線がボーダーです。Metal Look&Feelではテキストフィールドのまわりにjavax.swing.border.EtchedBorderクラスが使用されています。