在JavaFX中使用JavaScript调用java。可能吗? [英] Invoke java using JavaScript inside JavaFX. Is it possible?
问题描述
我正在使用 WebEngine
&从 JavaFX
WebView
。现在我想使用在 WebEngine
中运行的javascript来执行Java。
I am using WebEngine
& WebView
from JavaFX
. Now I want to execute Java using javascript running inside WebEngine
.
我的问题是,是否可以这样做如果是,任何提示。
My question is if it is possible to do so and if yes any hints.
我想做类似下面的事情
<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
里面它将执行该代码。
Now if I call the runSampleJava()
inside WebEngine
it will execute that code.
- 这不是关于
Rhino
java的JavaScript引擎 - 我知道可以注入java对象,例如:
JSObject window =(JSObject)webEngine.executeScript(window);
等等。但这不是我要找的。 li>
- This is not about
Rhino
JavaScript engine for java - I know it is possible to inject java object, eg:
JSObject window = (JSObject) webEngine.executeScript("window");
and so on. But this is not what I am looking for.
推荐答案
我无法创造Java实例,但我设法做的是将用Java创建的对象实例推送到JavaScript并回调它们。
I didn't manage to create Java instances but the thing I managed to do is to push object instances created in Java into JavaScript and call back to them.
所以我的Java代码看起来像这样: / p>
So my Java-Code looks like this:
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中:
And then then in JavaScript:
function bla() {
var number = jHelper.newInteger(1234);
var random = jHelper.newRandom();
// ...
}
You can see my work where I communicate between Java and JavaScript back and forth at https://github.com/tomsontom/fx-ide/tree/master/at.bestsolution.javafx.ide.editor and in action at http://tomsondev.bestsolution.at/2012/10/29/eclipsecon-javafx-demo-app-videos/
这篇关于在JavaFX中使用JavaScript调用java。可能吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!