什么是JavaFX相当于JSyntaxPane用于编写代码编辑器?
以前在Swing中,我使用JSyntaxPane
来创建一个小的Java源代码编辑器。 为了实践,我决定在JavaFX中重做整个项目并添加对更多语言的支持。 最好尽可能多。
但是,似乎没有类似于JSyntaxPane
。
一些研究让我Tom Schindl
了Tom 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的更新版本。