5

我正在使用WebEngine&WebView来自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和在http://github.com/ /tomsondev.bestsolution.at/2012/10/29/eclipsecon-javafx-demo-app-videos/

于 2013-01-14T13:03:25.790 回答