用Java实现编辑器

时间:2011-01-25 14:33:13

标签: java editor

我需要在Java中为三种自定义语言(智能感知,搜索和替换,语法突出显示,C#visual studio中的区域)实现编辑器。什么是最好的类(JEditor,JPanel或其他)?

5 个答案:

答案 0 :(得分:4)

看看Xtext。它是eclipse平台上的一个框架,可以从语言语法中自动生成大部分基础结构(如语法高亮和自动完成) - 基本上你可以在几分钟内完成一个非常强大的编辑器,而不是几个月的工作。

答案 1 :(得分:3)

查看Eclipses Rich Client PlatformNetBeans Platform。两者都包含大量用于桌面应用程序的类和小部件,包括可自定义的编辑器。

这是一篇关于使用后一种工具包构建自定义编辑器的博文:

  

... NetBeans平台包含一个名为“NetBeans编辑器库”的库。据我所知,这是最强大的开源Swing文本库之一,完全符合Swing Text API。

答案 2 :(得分:2)

您确定要从头开始实现吗?

您应该使用一些增加语言支持的框架。我建议看一下eclipse插件或intellij idea(社区版)插件。

答案 3 :(得分:1)

简短回复这是一项涉及多个Swing组件的艰巨任务

中等回复很久以前,jEdit文本编辑器组件可作为单独的组件使用。我建议您花五分钟时间进行快速谷歌搜索。它可以在这个方向上产生有趣的结果。

长回复您正在寻找的大多数功能(智能感知,语法高亮)都需要您使用语法,或者至少需要一个非常好的语言标记符来识别关键元素。这反过来意味着一个非常有效的document模型(在某种意义上说,它既有特征丰富,又有时间和内存都很小)。你别无选择,只能写自己的。关于搜索&替换,一旦有了Document,就必须将文本框中的标记与Document的元素进行匹配。在典型的syntax tree中,在同一文档流中包含的元素可能跨越多个节点。通常

for(int index=0; index<size; index++) {
     println(index);
}

跨越至少十个节点。如果你想搜索这个构造,你必须将文本位置映射到树节点,这可能不是一件容易的事。

答案 4 :(得分:1)

如果您熟悉Swing,请查看NetBeans平台。这是一个基于Swing的RCP。 NetBeans IDE本身构建在NetBeans平台上,您可以重用其模块,例如编辑器:

http://platform.netbeans.org/tutorials/nbm-htmleditor.html

http://platform.netbeans.org/tutorials/60/nbm-xmleditor.html