我正在尝试通过 JavaScripting API (Rhino) 从 JavaScript 使用 JavaFX 2。
注意:这是一个富客户端问题,与网络编程无关。
我想用动态脚本编排我的 JavaFX 富客户端应用程序的某些部分。我正在评估带有捆绑 JavaScript 运行时 (Rhino) 的 JavaScripting API 是否是满足我要求的好方法。
所以我的第一次尝试是通过 JavaScript 创建一个简单的 JavaFX-GUI:
print('Starting...')
importPackage(Packages.javafx.scene);
importPackage(Packages.javafx.scene.layout);
importPackage(Packages.javafx.stage);
importClass(Packages.javafx.scene.layout.StackPane);
importClass(Packages.javafx.scene.Scene);
importClass(Packages.javafx.stage.Stage);
myroot = new Packages.javafx.scene.layout.StackPane();
myscene = new Packages.javafx.scene.Scene(myroot);
mystage = new Packages.javafx.stage.Stage();
mystage.setScene(myscene);
mystage.show();
然后我用 jsrunscript 运行这个脚本。该脚本的灵感来自 Oracle 文档。
但是脚本在第 4 行已经失败:
> ☹ jrunscript -f script.js
> Starting...script error in file script.js :
> sun.org.mozilla.javascript.internal.EvaluatorException: Function importClass must be called with a class; had "[JavaPackage javafx.scene.layout.StackPane]" instead. (script.js#4) in script.js at line number 6
看起来我无法将 JavaFx 包/类导入 javascript 运行时。尽管 oracle 文档使用 java.awt 对此进行了说明。
我究竟做错了什么?