第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で音楽鳴らしたりできるわけだ。
プロンプトや確認ダイアログ等もコールバックメソッドが呼ばれるため、自動化ができるということだ。
好評なら続く・・・かも