Java swing文本编辑器,用于显示颜色和高亮显示

Java swing文本编辑器,用于显示颜色和高亮显示,java,swing,text-editor,Java,Swing,Text Editor,我正在编写一个应用程序,用户需要编写一个javascript脚本作为输入,现在我有一个简单的JTextArea,但我想对它进行一些更改,使其具有一些突出显示和代码着色功能,以使脚本更加连贯 你知道有什么开源软件可以做到这一点吗 谢谢请看一下提供的功能。我知道他们确实以JAR文件的形式发布组件,但它们在Maven central repo中不可用,这使我无法使用任何组件。试试看。它主要是用Java编写的编辑器,而不是编辑器组件。但也许您可以从jar文件中提取编辑器组件 只是一个想法。标准的JEdi

我正在编写一个应用程序,用户需要编写一个javascript脚本作为输入,现在我有一个简单的JTextArea,但我想对它进行一些更改,使其具有一些突出显示和代码着色功能,以使脚本更加连贯

你知道有什么开源软件可以做到这一点吗

谢谢

请看一下提供的功能。我知道他们确实以JAR文件的形式发布组件,但它们在Maven central repo中不可用,这使我无法使用任何组件。

试试看。它主要是用Java编写的编辑器,而不是编辑器组件。但也许您可以从jar文件中提取编辑器组件


只是一个想法。

标准的JEditorPane swing组件就可以了

更新:查看和

RSyntaxTextArea是用于JavaSwing的语法突出显示文本组件。它扩展了JTextComponent,因此与标准javax.swing.text包完全集成。它快速高效,可用于任何需要编辑或查看源代码的应用程序中

RSyntaxTextArea最初是RText程序员文本编辑器的一部分,但目前被制作成一个单独的组件,可在任何Swing应用程序中重用

屏幕截图:


我想,就我所猜测的,您需要的不是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控制台”) 它将用指定字体以红色显示HI。 如果你打电话给我,说
appendToPane(“THERE”,Color.BLACK,“TIMES NEW ROMAN”)

然后将在Hi旁边的同一位置以黑色打印。

开箱即用,或者您必须创建一个
EditorKit
/
文档来解析文本并提供高亮显示?@kdgregory默认情况下,JEditorPane知道html、rtf和纯文本。但可以配置更多的工具包/文档