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

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

但是,似乎没有类似于JSyntaxPane

一些研究让我Tom SchindlTom Schindl的博客 ,他在博客中创建了一个具有适当语法高亮的源代码查看器。 遗憾的是没有编辑支持。

然后是JewelSea的博客,但从截图来看,它看起来就像SO的type-and-preview方法。 在代码编辑器中不是所需的东西。

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

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

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

我目前正通过WebEngine在我的开源项目中使用Ace Editor 。 这是Kitchen Sink演示。

UPDATE

从当前JDK版本开始,JS / FX交互的可能方法:

  • 编写JS app / widget部分,独立测试。 如果您只打算嵌入一个编辑器小部件,那么它可能是一个带有

    的空网页,这是您的编辑器。

  • 然后,“从JS获取文本”场景的计划可能是这样的:’从Java调用JS函数,它将从编辑器元素获取文本,并使用作为方法的String参数传递的文本回调Java部分’ 。
  • 学习Java-JS绑定 – 即从Javascript进行WebView回调
  • 嵌入FirebugLite以从WebView调试JS。 唯一适用于我的版本是:

一些通用建议 - 尽量避免JS-to-Java调用的复杂性。 我向JavaFX团队提交了一些错误,因为一些简单的事情,比如覆盖一个方法对我来说不起作用。 避免将Java对象传递给JS - 虽然理论上可行,但我总是遇到应用程序崩溃。 所以现在我传递JSON并将其转换为双方的对象。

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

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

请注意,它需要JDK8。

我发布的编辑器示例不是类型和预览方法,它是使用WebKit嵌入( codemirror )到JavaFX应用程序中的JavaScript编辑器。 您可以在此处找到相关来源或概念项目中的迷你IDE的更新版本。