本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

Merlinの魔術: J2SE 1.4.2の新しい2つのルック・アンド・フィ・・

Windows Classic、Motif、Metalに合流したGTK+ とWindows XP

John Zukowski (jaz@zukowski.net), President, JZ Ventures, Inc.
Author photo
John Zukowskiは、JZ Ventures, Inc.の戦略的Javaコンサルティングを推進し、数多くのjGuruのコミュニティー主導のJava FAQsで常任指導者として活躍しています。最新の著書には、Apressから出版された「 Java Collections」および「 Definitive Guide to Swing for Java 2」 (第2版) があります。彼のメール・アドレスはjaz@zukowski.net です。

概要: ユーザー・デスクトップにおける最新かつ最高の技術を提供する努力を続ける中で、SunはJ2SE 1.4プラットフォームとともに提供されるルック・アンド・フィール・デザインの標準セットを新しくしました。Merlinの魔術の今回の記事では、John Zukowski氏がWindowsユーザーに向けて、最新の1.4.2リリース (記事執筆の時点ではベータ版) を使用してWindows XPの新しい外観やLinuxデスクトップで一般的なGTK+ の外観を実現する方法を説明します。

日付:  2003年 5月 27日
レベル:  初級 この記事の原文:  英語
アクティビティー: 1583 ビュー
お気軽にご意見・ご感想をお寄せください: 


これまでの「Merlinの魔術」のコラムでは、Javaリリース1.4の新機能を取り上げてきましたが、この最新の記事は、現在ベータ版のバージョン1.4.2についての説明です。Sunは、Windowsの従来の外観は既に古く、Motifについても、少なくとも一般的なユーザー・デスクトップでこれを使用するユーザーはもういないと判断しました。この最新バージョンの標準Javaプラットフォームでは、ユーザーがWindows XPマシンを使用していれば、Windows XP風の新しいWindowsのルック・アンド・フィールが提供されるようになっています。また、一般的なLinuxデスクトップのルック・アンド・フィールであるGTK+ というまったく新しいルック・アンド・フィールも提供されます。

Swingアーキテクチャーは、プラグ可能なルック・アンド・フィールのフレームワークを提供します。このフレームワークは、標準的な方法、たとえば、コンポーネントを作成する呼び出しを毎回変更することなく、すべてのコンポーネントのフォントを8ポイントのボールドのLucidaにするような手段を提供します。ルック・アンド・フィールに新しい設定をプラグインするだけで、魔法のようにすべてにその変更が適用されます。ルック・アンド・フィールを設定することにより、GUI全体のスタイルを変更することもできます。これまで、J2SE 1.4は、Microsoft WindowsやMotifなどのプラットフォーム固有のルック・アンド・フィール・デザインを提供していました。また、J2SE 1.4は、Javaプラットフォームに固有でありながら、ユーザーがどのようなデスクトップ上で操作しても同じように見える、MetalというクロスプラットフォームのUIも提供していました。

ルック・アンド・フィールのデザインを変更する

最新のルック・アンド・フィール・デザインについて考察する前に、Javaプログラムのルック・アンド・フィールを変更する方法をリスト1に示します。


リスト1. すべての表示モードの検索
                
  import java.awt.*;
  import javax.swing.*;
  public class Start extends JFrame {
    public Start() {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      Container c = getContentPane();
      JButton button = new JButton("Hello");
      c.add(button, BorderLayout.CENTER);
      setSize(100, 50);
      show();
    }
    public static void main(String[] args) {
      try {
      UIManager.setLookAndFeel(
        UIManager.getCrossPlatformLookAndFeelClassName());
        //UIManager.getSystemLookAndFeelClassName());
      } catch (Exception e) { }
      new Start();
    }
  }

UIManagersetLookAndFeel() の呼び出しでは、新しいルック・アンド・フィール・デザインのクラス名の完全に修飾されたパスを渡すことができます。クロスプラットフォームのMetal UIの対応するクラス名 (javax.swing.plaf.metal.MetalLookAndFeel) を思い出さなくても、getCrossPlatformLookAndFeelClassName() メソッドを使用すればシステムにその名前を尋ねることができます。一方、getSystemLookAndFeelClassName()は、ユーザーのデスクトップに固有のUIクラス名を返します。ユーザーがWindowsマシンでプログラムを実行している場合は、com.sun.java.swing.plaf.windows.WindowsLookAndFeel クラスを介してWindowsのUIが返されます。UNIXマシンを使用している場合は、Motif/CDEインターフェースまたはcom.sun.java.swing.plaf.motif.MotifLookAndFeel クラスが返されます。J2SE 1.4.2では、新しいGTK+ のルック・アンド・フィールも使用できますが、UNIXマシンのシステムのルック・アンド・フィール・クラスとしては返されません。この件については、J2SEリリース1.5で変更されることになっています。図1は、StartプログラムをWindows 2000マシンで実行した結果表示される外観を示しています。


図1. クロスプラットフォームのUI
クロスプラットフォームのUI

Windows XPとUNIXのユーザーの場合は、図2のように、少し異なるシステムの外観になります。


図2. WindowsクラシックなUI
WindowsクラシックなUI

注意: Apple版 のJavaを使用するMacintoshユーザーの場合は、Aquaのルック・アンド・フィールになります。

前述のとおり、Windows 2000ユーザーとWindows XPユーザーでは、外観の異なるUIが表示されます。Windows XPの新しい外観や使い勝手は、ルック・アンド・フィール・クラスの完全なセットではありません。非XPユーザーには、既存のWindows UIクラスのセットによってMicrosoft Windowsのクラシック・バージョンが表示され、Windows XPユーザーに対しては、Windows XPバージョンが表示されます。次に示すように、システム・プロパティーswing.noxp を設定すると、Windows XPユーザーにもよりクラシックなWindowsインターフェースが提供されます。XP以外のWindowsユーザーが新しいXPインターフェースの使用を選択することはできません。

java -Dswing.noxp=true Start


GTK+ のUI

新しいWindows XPの外観と使い勝手は、Windowsのルック・アンド・フィールを変更したものですが、GTK+ のUIは、まったく新しく、GTK+ 2.0 (GTK+ 2.0の情報へのリンクについては、参考文献を参照してください) に基づいています。非Linuxユーザーには、この名前は初めてではないかと思います。GTK+ は、一般的なLinuxデスクトップのUIの外観や使い勝手だと考えてください (Linuxではこれ以外を使用することもできます)。GTK+ の多くの部品はユーザーによるカスタマイズが可能で、特別な場所に設定ファイルを配置すると、その設定に従ってデスクトップのルック・アンド・フィールが変わります。また、SwingではJInternalFrame と呼ばれるマルチ・ドキュメント・インターフェース (MDI) のような機能は、GTK+ のフレームワークには含まれず、基盤となるウィンドウ・マネージャーに任されています。そのため、デスクトップはテーマ・エンジンによってカスタマイズできます。GTK+ 用のSwing UIにより、テーマ作成はMetacity (参考文献を参照) という名前のプロジェクトでサポートされます。システム・プロパティーswing.metacitythemename を設定することにより、使用するGTK+ のテーマを制御できます。デフォルトのテーマに加えて、CruxおよびBluecurveの各テーマがサポートされています。swing.gtkthemedir システム・プロパティーで指定されたディレクトリーに、後から追加のテーマを配置することができます。また、GTK+ のリソース・ファイルも、ルック・アンド・フィールをカスタマイズする手段になります。現時点では、追加のGTKエンジンの作成はサポートされていません。ただし、Themes.orgでどのようなものがあるかを確認することができます。


SwingSet2と新しいUI

新しいルック・アンド・フィールのデザインを実際に示す最も簡単な方法は、J2SEに標準で付属しているSwingSet2デモ・プログラムを見せることです。このプログラムは、J2SE 1.4のインストール先の、demo\jfc\SwingSet2 ディレクトリーに入っています。コマンドjava -jar SwingSet2.jar でプログラムを起動してください。このコマンドでは、-jar オプションを使用して、該当のJARのマニフェスト・ファイルで指定されたメイン・クラスが起動するようにしています。

初期画面には、いくつかのJInternalFrameコンポーネントとボタンが表示されます。これらのアイテムは、一般的なデスクトップ・アプリケーションでよく見られるものです。図3は、Windows XPマシンでのSwingSetアプリケーションの外観を示しています。


図3. Windows XPのルック・アンド・フィールを備えたSwingSet
Windows XPのルック・アンド・フィールを備えたSwingSet

図4は、GTK+ のルック・アンド・フィールです。


図4. GTK+ のルック・アンド・フィールを備えたSwingSet
GTK+ のルック・アンド・フィールを備えたSwingSet

Windowsで最も注目すべき変化の1つは、ファイル・ダイアログです。図5は、Windows XPのファイル・ダイアログの外観を示しています。


図5. Windows XPのファイル・ダイアログ
Windows XPのファイル・ダイアログ

GTK+ については、よりユーザー・フレンドリーなポップアップの外観を図6に示します。


図6. GTK+ の警告ダイアログ
GTK+ の警告ダイアログ

まとめ

J2SE 1.4.2は、Javaデスクトップの最新の標準に常に準拠しようとするSunの姿勢を強く浮き彫りにしています。Windows XPとGTK+ のルック・アンド・フィール・デザインにより、ユーザーにはよりネイティブ・アプリケーションに近い外観を持ったJavaアプリケーションが提供されます。また、J2SE 1.4.2では、新しいルック・アンド・フィール・デザインに加えて、多くのバグ修正や、特定の状況では実際に従来より300% 高速なJFileChooserも提供されています (なぜこれまでそれほど遅かったのかと思われるかもしれませんが、少なくとも今は速くなっています)。


参考文献

  • Merlinの使用にあたってのヒントが満載された著者のコラムの全編をお読みください。

  • 新しいルック・アンド・フィールのコンポーネントに関する情報をはじめとして、J2SE 1.4.2 Swingリリースにおける多くの変更点を学んでください。

  • Mitch Goldstein氏の記事「Swingモデルのフィルター処理」(developerWorks、2001年2月) をお読みください。



  • 非SwingのGTK+ のテーマについては、Themes.org/ をご覧ください。

  • developerWorks の「Building a customized tree view」(2001年1月) に関するチュートリアルを体験してください。

  • Joe Winchester氏とRenee Schwartz氏の記事では、「優れたGUIを構築する」(developerWorks、2001年10月) 方法を学ぶことができます。

  • LookAndFeel クラスの詳細については、このクラスのjavadoc を参照してください。

  • JFaceとSWTに関するこの記事で、「Eclipse Workbench以外でのEclipse GUIの使用」(developerWorks、2003年1月) について学んでください。

  • developerWorks のJava technology zone に掲載されている、Javaテクノロジーに関するその他の記事やチュートリアルもお読みください。

著者について

Author photo

John Zukowskiは、JZ Ventures, Inc.の戦略的Javaコンサルティングを推進し、数多くのjGuruのコミュニティー主導のJava FAQsで常任指導者として活躍しています。最新の著書には、Apressから出版された「 Java Collections」および「 Definitive Guide to Swing for Java 2」 (第2版) があります。彼のメール・アドレスはjaz@zukowski.net です。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology
ArticleID=218826
ArticleTitle=Merlinの魔術: J2SE 1.4.2の新しい2つのルック・アンド・フィ・・
publish-date=05272003
author1-email=jaz@zukowski.net
author1-email-cc=jaloi@us.ibm.com

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。