качать текстовый редактор, который цвет и подсветка - PullRequest
6 голосов
/ 07 января 2010

Я пишу приложение, в котором пользователь должен написать сценарий javascript в качестве входных данных, сейчас у меня есть простая JTextArea, но я хотел бы изменить его на что-нибудь, что сделает некоторые выделения и раскраску кода, чтобы сделать скрипт более последовательный.

знаете ли вы что-нибудь с открытым исходным кодом, что делает это?

спасибо

Ответы [ 5 ]

10 голосов
/ 09 января 2010

RSyntaxTextArea

RSyntaxTextArea - текстовый компонент с подсветкой синтаксиса для Java Swing. Он расширяет JTextComponent, поэтому полностью интегрируется со стандартным пакетом javax.swing.text. Это быстро и эффективно, и может использоваться в любом приложении, которое нуждается в редактировании или просмотре исходного кода.

RSyntaxTextArea изначально был частью текстового редактора программиста RText, но в настоящее время он превращается в отдельный компонент, который можно повторно использовать в любом приложении Swing.

Скриншот:

enter image description here

3 голосов
/ 07 января 2010

Попробуйте jEdit . В основном это редактор, написанный на Java, а не компонент редактора. Но, возможно, вы можете извлечь компонент редактора из файла jar.

Просто идея.

1 голос
/ 02 мая 2011

Полагаю, насколько я догадался, вам нужно что-то кроме JTextArea, чтобы вы могли показывать разные вещи в разных цветах. Что ж, это можно сделать с помощью JTextPane или JEditorPane.

Здесь я приведу простой пример того, как предоставить JTextPane указанное сообщение для печати и цвет этого сообщения.

Вы можете изменить цвета для любого входного текста, чтобы он мог отображать различные цвета для каждого слова.

// This is in javax.swing.JTextPane;
JTextPane tPane = new JTextPane();

/* Method to put text in this textPane with colour of your choice
 * For this you need these classes.
 * import javax.swing.text.AttributeSet;
 * import javax.swing.text.SimpleAttributeSet;
 * import javax.swing.text.StyleConstants;
 * import javax.swing.text.StyleContext;
 */

protected static void appendToPane(String msg, Color c,String f)
{
    StyleContext sc = StyleContext.getDefaultStyleContext();
    AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
    aset = sc.addAttribute(aset, StyleConstants.FontFamily, f);

    int len = tPane.getDocument().getLength();
    tPane.setCaretPosition(len);
    tPane.setCharacterAttributes(aset, false);
    tPane.replaceSelection(msg);
}

Так что, если вы так позвоните appendToPane("HI", Color.RED, "Lucida Console") он будет отображать HI красным цветом с указанным шрифтом. и если вы позвоните, скажите appendToPane(" THERE", Color.BLACK, "TIMES NEW ROMAN") тогда там будет напечатано черным цветом в том же месте рядом с Привет.

1 голос
/ 07 января 2010

Стандартный свинг-компонент JEditorPane сделает это.

ОБНОВЛЕНИЕ: ознакомьтесь с учебником API и

0 голосов
/ 07 января 2010

Посмотрите, что предоставляет NetBeans Platform . Я знаю, что они выпускают компоненты как JAR-файлы, но они недоступны в центральном репозитории Maven, что не позволяет мне использовать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...