第30夜 JavaFX 2.0 の組み込みブラウザで遊ぶ

JavaFX 2.0ではWebEngineといういわゆる組み込みブラウザが登場した。コンポーネントとしてはWebViewという入れ物があって、この2つを組み合わせて扱う。実際のコードの大半はWebEngineを使うことになるだろう。

組み込みブラウザ利用の基礎

WebViewとWebEngineの使い方はコードを見てもらえばわかりやすいか。

WebEngine we = new WebEngine();
WebView wv = new WebView(we);
container.getChildren().add(wv);

we.load("http://www.yahoo.co.jp");

WebEngineに対して設定しているのがわかるはず。

Javascriptの実行

we.executeScript("hoge();");

これでhogeという関数が呼ばれる。簡単。

このメソッドの戻り値はObjectである。というわけで式を評価させてみる。

{
    Object data = we.executeScript("'1' + '2'");
    System.out.println(data.getClass()+"/"+data);
}
{
    Object data = we.executeScript("1 + 2");
    System.out.println(data.getClass()+"/"+data);
}
{
    Object data = we.executeScript("1.0 + 2");
    System.out.println(data.getClass()+"/"+data);
}
{
    Object data = we.executeScript("1.5 + 2");
    System.out.println(data.getClass()+"/"+data);
}

実行

class java.lang.String/12
class java.lang.Integer/3
class java.lang.Integer/3
class java.lang.Double/3.5

3つ目の式が注目。浮動小数点と思わせて戻り値はInteger。

alertなどのダイアログ

we.executeScript("window.alert('あらーと?')");

この式を実行してもalertは表示されない。
ではどうするのか。


これはコールバックを設定することができる。

//コールバック
we.setOnAlert(new EventHandler<WebEvent<String>>() {
    public void handle(WebEvent<String> event) {
        System.out.println("alert:"+event.getData());
    }
});
we.executeScript("window.alert('あらーと?')");

これで標準出力に

alert:あらーと?

と表示される。

これを利用するとWebアプリからJava側を呼び出すことができる。JavaScriptでSwing操作とかJavaSoundで音楽鳴らしたりできるわけだ。

プロンプトや確認ダイアログ等もコールバックメソッドが呼ばれるため、自動化ができるということだ。


好評なら続く・・・かも