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

时间:2013-10-26 06:00:44

标签: java swing javafx-2 javafx-8

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

然而,似乎与JSyntaxPane没什么相似之处。

我进行了一些研究Tom Schindl的{​​{3}},他在那里制作了一个具有正确语法高亮的源代码查看器。遗憾的是没有编辑支持。

然后有JewelSea的{​​{3}}但是从截图中看起来就像SO的type-and-preview方法。在代码编辑器中不是所需的东西。

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

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

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

3 个答案:

答案 0 :(得分:12)

RichTextFX可让您进行突出显示。查看Java Keywords example

请注意,它需要JDK8。

答案 1 :(得分:1)

我发布的编辑器示例不是类型和预览方法,它是使用WebKit嵌入(codemirror)JavaFX应用程序的JavaScript编辑器。您可以在here中找到相关的来源conception project或mini-IDE的更新版本。

答案 2 :(得分:1)

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

<强>更新

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

  • 编写JS app / widget部分,独立测试。如果您只打算嵌入编辑器小部件,那么它可能是一个空的网页,其中<div>是您的编辑。
  • 然后一个'从JS获取文本'场景的计划可能是这样的:'从Java调用JS函数,它将从编辑器元素获取文本并使用作为String参数传递的文本回调Java部分方法'。
  • 了解Java-JS绑定 - 即WebView callback from Javascript
  • 嵌入FirebugLite从WebView调试JS。唯一适用于我的版本是:

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

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

您可以have a look at a working example here使用AngularJS / JavaFX应用程序。它处于pre-alpha状态,因此它甚至可能无法在您的计算机上启动,但可以被视为AngularJS桌面应用程序的概念证明。