gpt4 book ai didi

javascript - 通过 JavaScripting API (Rhino) 从 JavaScript 使用 JavaFX

转载 作者:行者123 更新时间:2023-11-29 22:13:27 24 4
gpt4 key购买 nike

我正在尝试通过 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 运行这个脚本。该脚本的灵感来自 from the Oracle documentation .

但是脚本在第 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 说明了这一点。

我做错了什么?

最佳答案

我建议使用 Nashorn script engine使用 jjs -fx 命令运行 JavaScript 编码的 JavaFX 脚本。

  • Nashorn 是比 Rhino 更现代的 JavaScript 引擎。
  • Nashorn 具有启动 JavaFX JavaScript 脚本的便捷功能。
  • Nashorn 包含在 Java 8 中,Rhino 将从 Java 8 中删除。

有一个使用 Nashorn with JavaFX 的例子这应该可以帮助您入门。

可以从以下网址下载包括 Nashorn 和 JavaFX 在内的 Java 8 早期访问版本: https://jdk8.java.net/download.html


关于您的 JavaFX 运行时问题,可能是因为您使用的是 Java7,其中 JavaFX 运行时不在您的运行时类路径中。在您的 JRE 位置中搜索 jfxrt.jar 并将返回的位置添加到您的运行时类路径中。这不是 Java 8 的问题,它在运行时类路径中包含 JavaFX。

关于javascript - 通过 JavaScripting API (Rhino) 从 JavaScript 使用 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16759011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com