Frage

Dies ist wahrscheinlich sogar für ein Teamprojekt eine kleine Herausforderung, geschweige denn für eine Ein-Mann-Implementierung, aber ich habe versucht, einen einfachen, aber eleganten Texteditor mit Syntaxhervorhebung zusammenzustellen JEditorPane.Ich bin darüber gestolpert Das Das wurde eingestellt und war für mich mit all den Lexer-Dateien und dem .lex-Zeug darin wirklich schwer zu verstehen.Ich habe sogar in einem Blog herausgefunden, dass dieses Projekt später von einem anderen Team übernommen, aber erneut eingestellt wurde.Ich brauche nicht, dass es zu ausgefallen ist, wie Code-Faltung und so weiter (auch wenn ich versucht bin, herauszufinden, wie das geht), aber ich brauche mindestens eine Grundlegende Syntaxhervorhebung existieren und so ziemlich Linien Nummern ganz links, genau wie zum Beispiel Notepad++.Bedenken Sie, dass ich es zumindest im Moment nur zum Hervorheben des Java-Quellcodes benötige.

Was ich suche, ist entweder ein Tutorial, ein gut dokumentiertes Beispiel und Beispielcode, ein vorgefertigtes Paket, sogar ein Tool für NetBeans kann den Zweck erfüllen. Ich brauche nicht unbedingt den von Grund auf neu geschriebenen Quellcode, ich brauche ihn nur eine Implementierung, die nützlich sein kann.Dank im Voraus!

P.S. Das wird weder kommerziell noch zu groß sein, fragen Sie sich nicht, warum ich das Rad neu erfinden möchte, wenn es doch so viele Programmier-Editoren gibt, ich lerne und das war eine schöne Übung für mich!

War es hilfreich?

Lösung

RSyntaxTextArea ist BSD-lizenziert und unterstützt Ihre Anforderungen sowie Code-Folding und mehr.Sehr einfach zu bedienen.

Andere Tipps

Nun, ich habe an einem ähnlichen Projekt gearbeitet und hier ist, was ich mir ausgedacht habe.Was die Zeilennummern angeht, habe ich einen Scrollbereich verwendet, der an den eigentlichen Textbereich angehängt ist.Das Scrollpane änderte dann die Zahlen mit dem folgenden Code:

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

Das Hervorheben der Syntax ist keine leichte Aufgabe, aber ich begann damit, nach Zeichenfolgen suchen zu können, die auf einigen Textdateien basierten, die alle Schlüsselwörter für eine bestimmte Sprache enthielten.Basierend auf der Erweiterung einer Datei findet die Funktion grundsätzlich die richtige Datei und sucht in dieser Datei nach Wörtern, die im Textbereich enthalten sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top