Pergunta

Este é um pouco difícil, até mesmo, provavelmente, para um projeto de equipe, muito menos para um homem de implementação, mas eu estava tentando montar um simples e elegante editor de texto com realce de sintaxe, usando um JEditorPane.Eu tropecei em cima de este qual foi interrompido e muito difícil para mim compreender, com todos os lexer e arquivos .lex coisas de dentro.Eu mesmo encontrei em algum blog que esse projeto foi posteriormente assumida por alguma outra equipe, mas ainda novamente interrompido.Eu não preciso disso para ser muito extravagante, como ter o código de dobramento e outras coisas (mesmo que eu estou tentado a descobrir como fazer isso), mas eu preciso de pelo menos um sintaxe básica destaque para existir e muito bonito números de linha no lado esquerdo assim como o Notepad++, por exemplo.Tenha em mente que eu só preciso para destacar Java, de código-fonte, pelo menos por agora.

O que eu estou procurando é um tutorial, um exemplo bem documentado e código de exemplo, uma pré-pacote, até mesmo uma ferramenta para o NetBeans pode fazer o truque, eu não neccesarily precisa do código-fonte escrito a partir do zero, só preciso de uma implementação que podem ser de uso.Obrigado antecipadamente!

P. S. Este não vai ser comercial ou grande demais, não pergunte por que eu quero reinventar a roda quando há tantos editores de programação lá fora, eu estou aprendendo e este veio como um bom exercício para mim!

Foi útil?

Solução

rsyntaxtextarea é licenciado BSD e suporta seus requisitos, mais o código dobrável e muito mais.Muito simples de usar.

Outras dicas

Bem, eu trabalhei em um projeto semelhante, e aqui está o que eu encontrei.Tanto a linha de números de ir eu usei um scrollpane anexado ao real textpane.O scrollpane foi, em seguida, alterar os números com o seguinte código:

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

O realce de sintaxe não é uma tarefa fácil, mas o que eu comecei com ser capaz de procurar por seqüências baseado alguns arquivos de texto que continha todas as palavras-chave para um determinado idioma.Basicamente, de acordo com a extensão de um arquivo a função iria encontrar o arquivo correto e procurar palavras no ficheiro que estavam contidos dentro da área de texto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top