什么是JavaFX相当于JSyntaxPane用于制作代码编辑器?

Lit*_*ild 7 java swing javafx-2 javafx-8

以前在Swing中,我用它JSyntaxPane来制作一个小的Java源代码编辑器.为了实践,我决定在JavaFX中重做整个项目并添加对更多语言的支持.最好尽可能多.

然而,似乎没有类似的东西JSyntaxPane.

研究有点使我Tom Schindl博客,在那里他取得了一个源代码查看器,正确的语法高亮.遗憾的是没有编辑支持.

再有就是JewelSea博客,但是从截图看起来的像这样的type-and-preview方法.在代码编辑器中不是所需的东西.

再次,JFXperience我发现在JavaFX 8中可以使用突出显示和缩进和编辑面板/节点,它还允许将Swing嵌入到Java中.

那么,我的其他选择是什么?

我知道JavaFX可以与JavaScript互操作,所以我有没有办法使用一些JavaScript库来实现同样的目标?

Tom*_*ula 13

RichTextFX可以让你突出显示.查看Java关键字示例.

请注意,它需要JDK8.


And*_*hev 2

目前正在我的开源项目中通过WebEngine. 这是厨房水槽演示。

更新

当前 JDK 版本中 JS/FX 交互的可能方法:

  • 编写 JS 应用程序/小部件部分,独立测试。如果您只想嵌入编辑器小部件,那么它可能是一个空网页,其中包含<div>您的编辑器。
  • 那么“从 JS 获取文本”场景的计划可能是这样的:“从 Java 调用 JS 函数,它将从编辑器元素获取文本,并回调 Java 部分,其中文本作为方法的字符串参数传递” 。
  • 学习 Java-JS 绑定 - 即来自 Javascript 的 WebView 回调
  • 嵌入 FirebugLite 以从WebView. 唯一对我有用的版本是:

    <script src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'>

一些一般建议 - 尽量避免 JS 到 Java 调用的复杂性。我向 JavaFX 团队提交了一些错误,因为一些简单的事情(例如覆盖方法)对我不起作用。避免将 Java 对象传递给 JS——尽管理论上这是可能的,但我总是以应用程序崩溃告终。所以现在我传递 JSON 并将其转换为两边的对象。

您可以在此处查看AngularJS/JavaFX 应用程序的工作示例。它处于 pre-alpha 状态,因此它甚至可能无法在您的计算机上启动,但可以被视为 AngularJS 桌面应用程序的概念证明。