ドキュメント



JavaFX: JavaFXアプリケーションへのHTMLコンテンツの追加

2 JavaFX WebViewコンポーネントの概要

この章では、WebビューアおよびそのAPIを介したフル・ブラウズ機能を提供するユーザー・インタフェース・コンポーネントであるJavaFX埋込みブラウザを紹介します。

埋込みブラウザ・コンポーネントは、オープン・ソースのWebブラウザ・エンジンであるWebKitに基づいています。カスケード・スタイルシート(CSS)、JavaScript、ドキュメント・オブジェクト・モデル(DOM)およびHTML5をサポートしています。

埋込みブラウザを使用すると、JavaFXアプリケーションで次のタスクを実行できます。

  • ローカルおよびリモートURLからのHTMLコンテンツのレンダリング

  • Web履歴の取得

  • JavaScriptコマンドの実行

  • JavaScriptからJavaFXへのアップコールの実行

  • Webポップアップ・ウィンドウの管理

  • 埋込みブラウザへの効果の適用

埋込みブラウザは、すべてのフィールドおよびメソッドをNodeクラスから継承し、その機能をすべて含んでいます。

埋込みブラウザを構成するクラスは、javafx.scene.webパッケージ内にあります。図2-1に、埋込みブラウザのアーキテクチャと、それが他のJavaFXクラスにどのように関連するかを示します。

図2-1 埋込みブラウザのアーキテクチャ

WebViewコンポーネントのアーキテクチャ
「図2-1 埋込みブラウザのアーキテクチャ」の説明

WebEngineクラス

WebEngineクラスでは、基本的なWebページ機能が提供されます。ユーザーと直接には対話しませんが、リンクのナビゲート、HTMLフォームの送信などのユーザーとの対話がサポートされます。WebEngineクラスでは、一度に1つのWebページが処理されます。HTMLコンテンツのロード、DOMへのアクセスなどの基本的なブラウズ機能、およびJavaScriptコマンドを実行する機能もサポートされます。

空のコンストラクタとURLが指定されたコンストラクタの2つのコンストラクタを使用すると、WebEngineオブジェクトを作成できます。空のコンストラクタをインスタンス化すると、loadメソッドを介してWebEngineオブジェクトにURLを渡すことができます。

JavaFX SDK 2.2より、開発者は特定のWebエンジンに対するJavaScriptコールの有効または無効にしたり、カスタム・スタイルシートを適用できます。ユーザー・スタイルシートにより、このWebEngineインスタンスでレンダリングされるページ上のデフォルト・スタイルが、ユーザー定義のスタイルに置き換えられます。

WebViewクラス

WebViewクラスは、Nodeクラスの拡張です。WebEngineオブジェクトをカプセル化し、HTMLコンテンツをアプリケーションのシーンに組み込み、効果や変換を適用するプロパティおよびメソッドを提供します。WebViewオブジェクトに対してコールされたgetEngine()メソッドにより、関連付けられたWebエンジンが返されます。

例2-1に、アプリケーションでWebViewおよびWebEngineオブジェクトを作成する一般的な方法を示します。

例2-1 WebViewおよびWebEngineオブジェクトの作成

WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("http://mySite.com");

PopupFeaturesクラス

PopupFeaturesクラスでは、JavaScriptの仕様での定義に従って、Webポップアップ・ウィンドウの機能が記述されます。アプリケーションで新しいブラウザ・ウィンドウを開く必要がある場合は、例2-2に示すようにsetCreatePopupHandlerメソッドを使用することにより、このクラスのインスタンスがWebEngineオブジェクト上に登録されたポップアップ・ハンドラに渡されます。

例2-2 ポップアップ・ハンドラの作成

webEngine.setCreatePopupHandler(new Callback<PopupFeatures, WebEngine>() {
    @Override public WebEngine call(PopupFeatures config) {                
        // do something
        // return a web engine for the new browser window
    }
});

メソッドによって同じWebViewオブジェクトのWebエンジンが返された場合は、同じブラウザ・ウィンドウでターゲット・ドキュメントが開きます。別のウィンドウでターゲット・ドキュメントを開くには、別のWebビューのWebEngineオブジェクトを指定します。ポップアップ・ウィンドウをブロックする必要がある場合は、null値を返します。

その他の機能

WebViewコンポーネントを使用する際は、このコンポーネントにデフォルトのインメモリー・キャッシュがあることに注意してください。つまり、WebViewコンポーネントを含むアプリケーションを閉じると、キャッシュされた内容がすべて失われます。ただし、開発者はjava.net.ResponseCacheクラスを使用することで、キャッシュをアプリケーション・レベルで実装できます。WebKitから見ると、永続キャッシュは、接続やCookieハンドラと似た、ネットワーク・レイヤーのプロパティの1つです。これらの一部がインストールされると、WebViewコンポーネントで透過的に使用されます。

ウィンドウを閉じる

目次

JavaFX: JavaFXアプリケーションへのHTMLコンテンツの追加

展開 | 縮小