我正在使用WebEngine&来自JavaFX的WebView.现在我想使用在WebEngine中运行的javascript来执行Java.
我的问题是,是否有可能这样做,如果是的话有任何提示.
我想做类似下面的事情
现在,如果我在WebEngine中调用runSampleJava(),它将执行该代码.
需要注意的要点
>这不是关于java的Rhino JavaScript引擎
>我知道可以注入java对象,例如:JSObject window =(JSObject)webEngine.executeScript(“window”);等等.但这不是我要找的.
最佳答案
我没有设法创建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和http://tomsondev.bestsolution.at/2012/10/29/eclipsecon-javafx-demo-app-videos/的来回看到我在Java和JavaScript之间来回沟通的工作