Текущий редактор с выделением синтаксиса и номерами строк?

StackOverflow https://stackoverflow.com//questions/12678104

Вопрос

Это немного сложно, даже возможно, для командного проекта, не говоря уже о реализации одного человека, но я пытался собрать простой, но элегантный текстовый редактор с помощью синтаксиса, используя JEditorPane. Я наткнулся на Это , который был прекращен и очень трудно понять со всеми файлами lexer и .lex вещи внутри. Я даже нашел в каком-то блоге, что этот проект был позже, был принят какой-то другой командой, но даже снова прекращены. Мне не нужно, чтобы быть слишком модным, например, складной для кода и прочее (даже если я искушаю, чтобы выяснить, как это сделать), но мне нужно хотя бы базовый синтаксис, подчеркивающий и в значительной степени строки на дальней левой стороне, например, например, блокнот ++. Имейте в виду, что мне нужно только для того, чтобы выделить исходный код Java, по крайней мере, на данный момент.

Что я ищу, это либо учебное пособие, хорошо документированный пример и код пример, предварительно сделанный пакет, даже инструмент для NetBeans может сделать трюк, я не обязательно нужен исходный код, написанный с нуля, Мне просто нужна реализация, которая может быть использована. Заранее спасибо!

psthis не будет коммерческим или слишком большим, не спрашивайте, почему я хочу изобретать колесо, когда там так много редакторов программирования, я учусь, и это придумал для меня хорошее упражнение! < / P >.

Это было полезно?

Решение

rsyntaxtextarea - это лицензированная BSD и поддерживает ваши требования, а также складывание кода и многое другое.Очень просто использовать.

Другие советы

Ну, я работал над аналогичным проектом, и вот что я придумал.Насколько номера линии идут я использовал Scrollpane, прикрепленную к фактической текстовой панели.Scrollpane затем меняли номера со следующим кодом:

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

Выделение синтаксиса не является легкой задачей, но то, что я начал с возможностью искать строки, основанные на некоторых текстовых файлах, которые содержали все ключевые слова для определенного языка.В основном на основе расширения файла функция найдет правильный файл и искать слова в этом файле, содержащемся в текстовой области.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top