我正在使用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引擎Rhino
等等。但这不是我要找的。 li>
答案 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/
进行操作