5

WebEngineWebViewfromを使用していJavaFXます。ここで、内部で実行されているjavascriptを使用してJavaを実行したいと思いますWebEngine

私の質問は、そうすることが可能かどうか、そして可能であれば何かヒントがあるかどうかです。

以下のようなことをしたい

<script type="text/javascript">
  function runSampleJava() {
    var number = new java.lang.Integer(1234);
    var random = new java.util.Random();
    java.lang.System.out.println(random.nextInt());
  }
</script>

runSampleJava()これで、内部を呼び出すと、WebEngineそのコードが実行されます。


注意点

  • これはRhinoJava用のJavaScriptエンジンに関するものではありません
  • 例:などのJavaオブジェクトを挿入できることはわかっていますJSObject window = (JSObject) webEngine.executeScript("window");。しかし、これは私が探しているものではありません。
4

1 に答える 1

4

Java インスタンスを作成することはできませんでしたが、Java で作成されたオブジェクト インスタンスを JavaScript にプッシュしてコールバックすることはできました。

したがって、私のJavaコードは次のようになります。

JSObject win = (JSObject) engine.executeScript("window");
win.setMember("jHelper", new JavaHelper());

JavaHelper例 (公開する必要があります):

public static class JavaHelper {
    public int newInteger(int input) {
        // ...
    }
    public Random newRandom() {
        // ...
    }
}

そして、JavaScript で:

function bla() {
  var number = jHelper.newInteger(1234);
  var random = jHelper.newRandom();
  // ...
}

https://github.com/tomsontom/fx-ide/tree/master/at.bestsolution.javafx.ide.editorで、Java と JavaScript の間でやり取りしている私の作品と、 http:/で実際の動作を確認できます。 /tomsondev.bestsolution.at/2012/10/29/eclipsecon-javafx-demo-app-videos/

于 2013-01-14T13:03:25.790 に答える