ルックアンドフィールの操作
Windowsに用意されているルックアンドフィール。 |
WindowsのJava 5以降でプログラムを実行した場合の結果が上の図です。この環境では、標準で以下の4種類のルックアンドフィールが用意されています。
・Metal――Javaのオリジナル・ルックアンドフィールです。Java 5以降では、「Ocean」と呼ばれるテーマが標準となり、かなりきれいで、Windowsで利用しても違和感の少ないルックアンドフィールとなっています。
・CDE/Motif――Linux/UNIXの世界で古くから用いられてきたルックアンドフィールです。
・Windows――Windows XP以降で使われている、新しいルックアンドフィールです。Vistaでは、Vistaとほぼ同じようなデザインで表示されます。
・Windows Classic――Windows 2000まで使われてきたルックアンドフィールです。
では、これらのルックアンドフィールドはどのようにして設定されるのでしょうか。ソースコードを見てみると、ationPerformedメソッドにルックアンドフィール変更の処理が用意されています。
UIManager.setLookAndFeel( ルックアンドフィール );
まず、UIManagerクラスのsetLookAndFeelメソッドで、使用するルックアンドフィールを変更します。引数には、ルックアンドフィールのクラスか、クラス名のStringを指定します。ルックアンドフィールの変更は、たったこれだけです。ただし、これはあくまで設定が変更されるだけなので、既に表示されているGUIなどの表示はそのままです。
SwingUtilities.updateComponentTreeUI(this);
そこで、現在既に表示されているGUIのルックアンドフィールを最新の状態に更新してやります。これはSwingUtilitiesのupdateComponentTreeUIメソッドで行います。引数にコンポーネントを渡すと、そのコンポーネントおよびコンポーネント内に組み込まれているコンポーネントを全て更新します。ここでthis(表示しているウインドウ)を渡せば、そのウインドウ内に組み込まれている全てのコンポーネント類が更新されるというわけです。
ルックアンドフィールを調べる
では、このルックアンドフィールというのは、どこにどうやって格納されているのでしょう。どんなルックアンドフィールがあるのか、どうやって調べればいいのでしょうか。ここでは、利用可能なルックアンドフィールを以下のようにして調べていますね。
UIManager.LookAndFeelInfo[] arr = UIManager.getInstalledLookAndFeels();
UIManagerクラスの「getInstalledLookAndFeels」は、利用可能なルックアンドフィールをすべて取得するためのものです。これは、ルックアンドフィールを「UIManager.LookAndFeelInfo」というクラスの配列として返します。このクラスは、ルックアンドフィールに関する情報を管理するためのものです。
このUIManager.LookAndFeelInfoから、getNameやgetClassNameといったメソッドを呼び出すことで、ルックアンドフィール名やクラス名を得ることができます。取得したクラス名を使ってsetLookAndFeelを呼び出せば、そのルックアンドフィールに切り替えることができる、というわけです。