通过JavaScript API (Rhino)从JavaScript使用JavaFX
Using JavaFX from JavaScript through the JavaScripting API (Rhino)
我正在尝试使用JavaFX 2从JavaScript通过JavaScript API (Rhino)。
注意:这是一个富客户端问题,与web编程无关。
我想用动态脚本编排JavaFX富客户端应用程序的某些部分。我正在评估捆绑JavaScript运行时(Rhino)的JavaScript 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.
我做错了什么?
我建议使用jjs -fx
命令运行JavaScript编码的JavaFX脚本。
- Nashorn是一个比Rhino更现代的JavaScript引擎。
- Nashorn有方便的特性来启动JavaFX JavaScript脚本。
- java8中包含了Nashorn, Rhino将从java8中移除。
有一个在JavaFX中使用Nashorn的例子,应该可以帮助你入门。
包括Nashorn和JavaFX在内的Java 8早期访问版本可以从以下网址下载:https://jdk8.java.net/download.html
关于您的JavaFX运行时问题,这可能是因为您正在使用Java7,其中JavaFX运行时不在您的运行时类路径上。在JRE位置搜索jfxrt.jar,并将返回的位置添加到运行时类路径中。这在Java 8中不是问题,Java 8在运行时类路径中包含了JavaFX。
相关文章:
- Javascript:使用绝对路径设置img src
- Javascript使用变量设置属性
- 使用Javascript使用数组检查文本框中的值
- Javascript:使用document.write时删除子项
- Javascript 使用 document.write 编写 innerHtml 的值
- JavaScript使用字符串Reveal Triangles
- Javascript:使用用户输入搜索数组
- 使用javascript使用for循环声明变量
- 如何使用Javascript使用给定的输入创建输出表
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- Javascript使用+添加对象
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- Javascript使用Confirm取消表单提交
- javascript使用正则表达式得到错误的结果
- 对javascript使用.html中的select id
- JavaScript-使用B.prototype=new A()继承数组
- Javascript:使用一个预先存在的对象值作为一个新对象的键
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- Javascript使用JCanvaScript在画布中加载图像
- 模型中的Javascript使用列表