即使对于团队项目来说,这也有点具有挑战性,更不用说对于一个人的实现而言,但我试图使用
JEditorPane
组合一个简单而优雅的带有语法突出显示的文本编辑器。我偶然发现了 this,它已经停产了,里面的所有词法分析器文件和 .lex 内容对我来说真的很难理解。我什至在一些博客中发现这个项目后来被其他一些团队接手,但还是再次终止。我不需要它太花哨,比如代码折叠之类的东西(尽管我很想知道如何做到这一点),但我至少需要一个基本语法突出显示存在并且几乎行最左侧的数字 就像 Notepad++ 一样。请记住,我只需要它来突出显示 Java 源代码,至少现在是这样。
我正在寻找的是一个教程,一个记录良好的示例和示例代码,一个预制包,甚至一个 NetBeans 工具也可以做到这一点,我不一定需要从头开始编写的源代码,我只是需要一个可以使用的实现。预先感谢!
P.S.这不会商业化或太大,不要问我为什么要重新发明轮子,因为有这么多编程编辑器,我正在学习,这对我来说是一个很好的练习!
RSyntaxTextArea 已获得 BSD 许可,支持您的要求以及代码折叠等。 使用起来非常简单。
我做过一个类似的项目,这就是我的想法。就行号而言,我使用了附加到实际文本窗格的滚动窗格。然后,滚动窗格使用以下代码更改数字:
public class LineNumberingTextArea extends JTextArea
{
private JTextPane textArea;
/**
* This is the contructor that creates the LinNumbering TextArea.
*
* @param textArea The textArea that we will be modifying to add the
* line numbers to it.
*/
public LineNumberingTextArea(JTextPane textArea)
{
this.textArea = textArea;
setBackground(Color.BLACK);
textArea.setFont(new Font("Consolas", Font.BOLD, 14));
setEditable(false);
}
/**
* This method will update the line numbers.
*/
public void updateLineNumbers()
{
String lineNumbersText = getLineNumbersText();
setText(lineNumbersText);
}
/**
* This method will set the line numbers to show up on the JTextPane.
*
* @return This method will return a String which will be added to the
* the lineNumbering area in the JTextPane.
*/
private String getLineNumbersText()
{
int counter = 0;
int caretPosition = textArea.getDocument().getLength();
Element root = textArea.getDocument().getDefaultRootElement();
StringBuilder lineNumbersTextBuilder = new StringBuilder();
lineNumbersTextBuilder.append("1").append(System.lineSeparator());
for (int elementIndex = 2; elementIndex < root.getElementIndex(caretPosition) +2;
elementIndex++)
{
lineNumbersTextBuilder.append(elementIndex).append(System.lineSeparator());
}
return lineNumbersTextBuilder.toString();
}
}
语法突出显示不是一项容易的任务,但我首先能够根据包含某种语言的所有关键字的一些文本文件来搜索字符串。基本上基于文件的扩展名,该函数将找到正确的文件并查找该文件中包含在文本区域内的单词。
我正在 C/C++ masm 和 nasm 上编写代码。在 win64 上。 我找到了像记事本这样的文本编辑器,具有语法突出显示功能, 行号,轻松折叠代码,并可设置光标 在空白(空)行的任何位置。 我尝试: 记事本++ 记事本4 格维姆 网络风暴 崇高文本 编辑器 超编辑 VS代码 以及许多其他文本编辑器。
So, only Visual Studio had these.
for ASM I instal ASMdude (syntax highlighting).
folding code - right click mouse - .... - fold and unfold.
ALT+ Left mouse - in any place of string - and you can write code.
Just create blank project, and add file/files you need.
----------------------------------------------------------------