Question

C'est un peu difficile, même probablement pour un projet d'équipe, et encore moins pour une implémentation par un seul homme, mais j'essayais de mettre en place un éditeur de texte simple mais élégant avec coloration syntaxique, en utilisant un JEditorPane.je suis tombé sur ce qui a été abandonné et très difficile à comprendre pour moi avec tous les fichiers lexer et les éléments .lex à l'intérieur.J'ai même découvert sur un blog que ce projet avait ensuite été repris par une autre équipe, mais encore une fois abandonné.Je n'ai pas besoin que ce soit trop sophistiqué, comme avoir du pliage de code et d'autres choses (même si je suis tenté de découvrir comment faire cela), mais j'ai besoin d'au moins un coloration syntaxique de base exister et à peu près numéros de ligne à l'extrême gauche, tout comme Notepad++ par exemple.Gardez à l'esprit que je n'en ai besoin que pour mettre en évidence le code source Java, du moins pour le moment.

Ce que je recherche, c'est soit un tutoriel, un exemple et un exemple de code bien documentés, un package prédéfini, même un outil pour NetBeans peut faire l'affaire, je n'ai pas nécessairement besoin du code source écrit à partir de zéro, j'ai juste besoin une implémentation qui peut être utile.Merci d'avance!

P.S. Cela ne va pas être commercial ou trop gros, ne me demandez pas pourquoi je veux réinventer la roue alors qu'il y a tant d'éditeurs de programmation, j'apprends et cela s'est avéré être un bon exercice pour moi !

Était-ce utile?

La solution

RSyntaxTextArea est sous licence BSD et prend en charge vos besoins, ainsi que le pliage de code et bien plus encore.Très simple à utiliser.

Autres conseils

Eh bien, j'ai travaillé sur un projet similaire et voici ce que j'ai proposé.En ce qui concerne les numéros de ligne, j'ai utilisé un volet de défilement attaché au volet de texte lui-même.Le volet de défilement changeait alors de numéro avec le code suivant :

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

La coloration syntaxique n'est pas une tâche facile, mais j'ai commencé par pouvoir rechercher des chaînes basées sur certains fichiers texte contenant tous les mots-clés d'une certaine langue.Fondamentalement, en fonction de l'extension d'un fichier, la fonction trouverait le fichier correct et rechercherait les mots de ce fichier contenus dans la zone de texte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top