我正在编写一个应用程序,用户需要将JavaScript脚本作为输入编写。目前我有一个简单的JTextArea,但我想用一些可以进行语法高亮和代码着色的东西来代替它,以使脚本更加连贯。
你知道有什么开源工具可以做到这一点吗?
谢谢。
我正在编写一个应用程序,用户需要将JavaScript脚本作为输入编写。目前我有一个简单的JTextArea,但我想用一些可以进行语法高亮和代码着色的东西来代替它,以使脚本更加连贯。
你知道有什么开源工具可以做到这一点吗?
谢谢。
RSyntaxTextArea是Java Swing的语法高亮文本组件。它扩展了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 Console")
,它将以指定字体的红色显示 HI。
如果你这样调用 appendToPane(" THERE", Color.BLACK, "TIMES NEW ROMAN")
,那么 THERE 将以黑色在同一位置旁边打印 Hi。
EditorKit
/Document
? - kdgregory