文本编辑器与语法高亮和行号?(Text editor with syntax highlightin

2019-08-01 02:02发布

这是一个有点挑战性,甚至可能是一个团队项目,更不用说一个人实现,但我试图把连同语法高亮一个简单而不失优雅的文本编辑器,使用JEditorPane 。 我偶然发现了其中已经停产了,真的很难,我所有的词法分析器文件和内部.lex东西理解。 我甚至在一些博客,这个项目后来被通过一些其他的球队,但即使再次停产发现。 我并不需要它太花哨,就像代码折叠和东西(尽管我很想找出如何做到这一点),但我至少需要一个基本的语法高亮存在,相当多的行号上最左侧就像记事本++为例。 请记住,我只需要它来突出Java源代码,至少现在是这样。

我所寻找的是无论是教程,有充分证据例子和示例代码,一个预制的包,甚至针对NetBeans可以做的伎俩一个工具,我不neccesarily需要重新编写源代码,我只需要这可能是使用的实现。 提前致谢!

PSThis是不是会是商用还是太大了,不要问我为什么要重塑时有这么多节目的编辑在那里,我学习,这提出了一个很好的锻炼,我的车轮!

Answer 1:

RSyntaxTextArea是BSD许可和支持你的要求,加上代码折叠等等。 使用方法很简单。



Answer 2:

嗯,我曾在一个类似的项目,这里就是我想出了。 据行号去,我使用了装的实际textpane一个滚动窗格。 然后滚动窗格被换号用下面的代码:

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();
}
}

语法高亮不是一件容易的事,但我开始是能够搜索基于关闭包含所有关键字的某种语言的一些文本文件的字符串。 基本上基于掀起了文件中的函数会找到正确的文件,查找被包含文本区域内,在该文件中的单词扩展。



文章来源: Text editor with syntax highlighting and line numbers?