我正在尝试创建一个应用程序(游戏),它使用java来操裁剪理、逻辑等,但会使用现有的javascript库来执行脚本、图形和ui等操作,但在加载图表时。通过 nashorn nashorn.eval("load('chart.js')");
我得到以下内容(或其他库的类似内容)
线程“main”中出现异常 javax.script.ScriptException:ReferenceError:chart.js 中第 668 行未定义“window”
。
是否可以按原样使用这些库,或者是否需要进行任何修改,以及如何在 java 应用程序中显示脚本(或者是否有可能,有或没有 nashorn)?
谢谢。
最佳答案
如上所述,您可以使用 JavaFX WebView 将“浏览器”HTML+脚本加载到 Nashorn JavaFX GUI 中。您可以加载生成的 HTML 以及从 URL 加载。
简单的例子:
http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/showsysprops.js http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/showenv.js
您还可以从 Nashorn 引擎访问“浏览器”JS/DOM 对象并使用 nashorn 脚本进行操作(如果需要):
http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/browser_dom.js
鉴于您将使用 Java 库,您可能还需要考虑不带 WebView 的 JavaFX GUI(甚至根据需要进行混合匹配)。这里有一些简单的例子:
http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/jsonviewer.js http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/time_color.fx http://hg.openjdk.java.net/jdk9/dev/nashorn/file/f884dff432a7/samples/fxml_example.js
将第三方 HTML+脚本加载到 JavaFX GUI 并从 nashorn 脚本扩展它的有点复杂的示例:
关于javascript - 使用 Nashorn/JavaScript 创建 Java GUI 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31507598/