2 Swing開発者にとってのJavaFXの利点
JavaFXは、なめらかなアニメーション、Webビュー、オーディオとビデオの再生、カスケード・スタイルシート(CSS)に基づくスタイルなど、アプリケーションに高度なGUI機能を提供するように設計されています。
10年以上にわたって、アプリケーション開発者は、グラフィカル・ユーザー・インタフェース(GUI)をビルドし、双方向性をJavaアプリケーションに追加するためのツールキットとして、Swingが非常に効果的であると考えてきました。ただし、今日最もよく使用されているGUI機能の一部は、Swingを使用しても容易に実装できません。アプリケーション開発者は、このような機能と、次の項で説明するその他の機能を使用して、最新の要件に幅広く対応できるようになります。このドキュメントの後半の章では、SwingをJavaFXとともに使用する方法について説明します。
FXMLの使用
FXMLは、開発者がアプリケーション・ロジックの実装とは独立してJavaFXアプリケーションのユーザー・インタフェース(UI)を作成するために使用できる、XMLベースのマークアップ言語です。Swingでは、ユーザー・インタフェースの宣言的なビルド・アプローチは提供されていません。宣言的なUIの作成方法は、シーン・グラフに特に適していますが、これは、シーン・グラフがFXMLにおいてより透過的であるためです。FXMLを使用すると、開発者はより容易に、複雑なユーザー・インタフェースを管理できるようになります。
FXMLを使用する利点の詳細は、FXMLの習得を参照してください。
JavaFX Scene Builder
アプリケーションのレイアウトをビルドする開発者を支援するために、JavaFXにはJavaFX Scene Builderというデザイン・ツールが用意されています。UIコンポーネントをJavaFXコンテンツ・ペインにドラッグ・アンド・ドロップすると、ツールによって、NetBeans、EclipseなどのIDE内で使用できるFXMLコードが生成されます。
詳細は、Scene Builderのドキュメントを参照してください。
CSSのサポート
カスケード・スタイルシートには、UI要素の外観を制御するスタイル定義が含まれています。JavaFXアプリケーションでのCSSの使用方法は、HTMLでのCSSの使用方法に似ています。CSSを使用すると、JavaFXコントロールおよびシーン・グラフ・オブジェクトのテーマを、容易にカスタマイズして開発できます。
インライン・スタイルを設定するのではなく、CSSを使用すると、アプリケーションのロジックを、その視覚的な外観の設定から分離できるようになります。また、CSSを使用すると、その後のアプリケーションの外観の管理が容易になり、パフォーマンス面でもいくつかの利点が得られます。
CSSの詳細は、「CSSによるJavaFXアプリケーションのスキニング」とJavaFX CSSリファレンス・ガイドを参照してください。
JavaFXのメディア・サポート
JavaFXプラットフォームによって提供されるメディア・サポートを利用すると、オーディオ・ファイルとビデオ・ファイルの再生のようなメディア機能を追加することによって、デスクトップ・アプリケーションを強化できます。メディア機能は、JavaFXをサポートするすべてのプラットフォームで提供されます。サポートされるメディア・コーデックのリストは、「JavaFXメディアの概要」を参照してください。
詳細は、「メディア機能を使用したアプリケーションの強化」を参照してください。
アニメーション
アニメーションによって、アプリケーションのインタフェースに動的な性質と最新の外観を適用できます。Swingアプリケーションでオブジェクトをアニメーション化することは可能ですが、その作業は容易ではありません。Swingのレンダリング・モデルでは、二重バッファ上で描画が発生します。時間の経過に伴うオブジェクトのプロパティと位置に関するすべての変更は、二重バッファ上でレンダリングされます。描画の完了時にのみ、最終的な結果が実際に画面上に描画されます。Swingを使用して、オブジェクトの時間ベースの変更を表示するには、開発者が膨大な作業を行う必要があります。一方、JavaFXでは、プラットフォームの基礎となるシーン・グラフと、アニメーション化専用に作成された特定のAPIが提供されるため、開発者は、より容易にアプリケーション内のグラフィカル・オブジェクトをアニメーション化できるようになります。
JavaFXでのアニメーションの詳細は、「遷移およびタイムライン・アニメーションの作成」を参照してください。「木のアニメーションの例」を確認してください。
HTMLコンテンツ
長い間、Swing開発者は、HTMLコンテンツをJavaアプリケーション内にレンダリングする機能を必要としてきました。JavaFXは、Webビューおよびフル・ブラウズ機能を持つユーザー・インタフェース・コンポーネントを提供することによって、この機能を実現しました。
詳細は、JavaFXアプリケーションへのHTMLコンテンツの追加を参照してください。