UIManagerクラスの定義とコンストラクタ

広告

UIManagerクラスの定義を確認します。クラス図は次のようになっています。

java.lang.Object
  javax.swing.UIManager

public class UIManager extends Object implements Serializable

UIManagerクラスはコンストラクタを使ってオブジェクトを作成して利用するのではなく、UIManagerクラスで定義済みのstaticメソッドを使います。

UIManagerクラスを使って外観を管理するにはLook & Feelを設定することにより行います。Look & FeelはLookAndFeelクラスのオブジェクトとして定義されており、Javadで用意されているLook & Feelを切り替えて利用したり自分で定義することができます。

Look & Feelの一覧

それでは既に用意されているLook & Feelの一覧を確認してみます。UIManagerクラスで用意されている「getInstalledLookAndFeels」メソッドを使います。

public static UIManager.LookAndFeelInfo[] getInstalledLookAndFeels()

現在使用可能な LookAndFeel 実装を表す LookAndFeelInfo の配列を返します。
アプリケーションは LookAndFeelInfo オブジェクトを使用して、ユーザー用 
Look & Feel オプションのメニューを構築したり、起動時に設定する Look & 
Feel を決定したりできます。大量の LookAndFeel オブジェクトの生成による
負荷を避けるため、LookAndFeelInfo は、実際の LookAndFeel インスタンスで
はなく、LookAndFeel クラスのクラス名を管理します。

次に、LookAndFeelInfo のインスタンスから現在の Look & Feel を設定する例
を示します。 

  UIManager.setLookAndFeel(info.getClassName());
 
戻り値:
  LookAndFeelInfo オブジェクトの配列

このメソッドを実行すると既に用意されているLook & Feelに関する情報を保持するUIManager.LookAndFeelInfoクラスのオブジェクトの配列を受け取ります。

Look & Feelの実装はLookAndFeelクラスを継承したクラスで定義されています。UIManager.LookAndFeelInfoクラスはLookAndFeelクラスを継承して作成されたクラスに関するクラス名や名前だけを管理しているものです。

クラス名を取得するにはUIManager.LookAndFeelInfoクラスで定義されている「getClassName」メソッドを使います。

public String getClassName()

この Look & Feel を実装するクラスの名前を返します。

戻り値:
  この LookAndFeel を実装するクラスの名前

またクラスの簡単な識別名を取得するにはUIManager.LookAndFeelInfoクラスで定義されている「getName」メソッドを使います。

public String getName()

Look & Feel の名前をメニューまたはほかの表現に適した形式で返します。

戻り値:
  名前が格納されている String

実際の使い方は次のようになります。

UIManager.LookAndFeelInfo infos[] = UIManager.getInstalledLookAndFeels();

for(int i = 0 ; i < infos.length ; i++){
  System.out.println(infos[i].getClassName());
  System.out.println(infos[i].getName());
}

サンプルプログラム

では簡単なサンプルを作成して試してみます。

UIManagerTest1.java

import javax.swing.UIManager;

public class UIManagerTest1{

  public static void main(String[] args){
    UIManager.LookAndFeelInfo infos[] = UIManager.getInstalledLookAndFeels();

    System.out.println("getClassName:");

    for(int i = 0 ; i < infos.length ; i++){
      System.out.println(infos[i].getClassName());
    }

    System.out.println("getName:");

    for(int i = 0 ; i < infos.length ; i++){
      System.out.println(infos[i].getName());
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

getClassName:
javax.swing.plaf.metal.MetalLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
getName:
Metal
CDE/Motif
Windows
Windows Classic

現在4つのLook & Feelが用意されており、それぞれ上記のクラスとして定義されていることが分かります。

次のページ以降でSwingアプリケーションのLook & Feelを切り替える方法を確認します。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。