Hatena::ブログ(Diary)

しんさんの出張所 はてな編 このページをアンテナに追加 RSSフィード

カレンダー
2007 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2015 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 |
2016 | 05 | 08 | 10 | 11 | 12 |
2017 | 01 | 02 | 06 | 08 | 11 |
2018 | 02 |

2011-06-15

[][]第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側を呼び出すことができる。JavaScriptSwing操作とかJavaSoundで音楽鳴らしたりできるわけだ。

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


好評なら続く・・・かも

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/shin/20110615/p1