Domanda

Questo è un po 'impegnativo probabilmente probabilmente per un progetto di squadra, per non parlare di un'implementazione unica, ma stavo cercando di mettere insieme un editor di testo semplice ma elegante con l'evidenziazione della sintassi, utilizzando un JEditorPane. Sono inciampato su questo che è stato interrotto e davvero difficile per me capire con tutti i file Lexer e. Sbatte. Ho persino trovato in qualche blog che questo progetto è stato in seguito assunto da qualche altra squadra ma ancora ancora dismesso. Non ho bisogno che sia troppo elegante, come avere il codice pieghevole e roba (anche se sono tentato di scoprire come fare questo), ma ho bisogno di almeno un Sintassi di sintassi di base per esistere E praticamente i numeri di linea sul lato sinistro del fondo proprio come Blocco note ++ per esempio. Tieni presente che ho solo bisogno di evidenziare il codice di origine Java, almeno per ora.

Quello che sto cercando è un tutorial, un esempio ben documentato e un codice di esempio, un pacchetto pre-fatto, anche uno strumento per NetBeans può fare il trucco, non sono necessariamente bisogno del codice sorgente scritto da zero, Ho solo bisogno di un'implementazione che può essere utile. Grazie in anticipo!

Psthis non sarà commerciale o troppo grande, non chiedere perché voglio reinventare la ruota quando ci sono così tanti editor di programmazione là fuori, sto imparando e questo è venuto come un bell'esercizio per me! < / P >.

È stato utile?

Soluzione

RsyntaxTextaRea è BSD con licenza con licenza e supporta le tue esigenze, oltre al codice Piegatura e altro.Molto semplice da usare.

Altri suggerimenti

Beh, ho lavorato su un progetto simile ed ecco cosa ho trovato.Per quanto lontano i numeri di linea vanno ho usato uno scrollpane collegato al test di testo effettivo.Lo scrollPane stava quindi cambiando i numeri con il seguente codice:

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

L'evidenziazione della sintassi non è un compito facile, ma ciò che ho iniziato è stato in grado di cercare stringhe in base a alcuni file di testo che contenevano tutte le parole chiave per una determinata lingua.Fondamentalmente basato sull'estensione di un file, la funzione troverebbe il file corretto e cercherebbe parole in quel file contenuto all'interno dell'area di testo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top