在JavaFX中使用JavaScript调用java。可能吗?

时间:2013-01-14 12:32:19

标签: java javascript javafx

我正在使用WebEngine&来自WebView的{​​{1}}。现在我想使用在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 java的JavaScript引擎
  • 我知道可以注入java对象,例如:Rhino等等。但这不是我要找的。

1 个答案:

答案 0 :(得分:4)

我没有设法创建Java实例,但我设法做的是将用Java创建的对象实例推送到JavaScript并回调它们。

所以我的Java代码看起来像这样:

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

JavaHelper示例(must be public):

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/

进行操作