我正在为代码编辑器编写脚本,我想要动态命令。
因此,如果用户输入“class”,它将改变“class”的颜色。
我该怎么做?
// This is the main focus part of the code.
textarea.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
word += evt.getKeyChar();
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
word = "";
line = "";
lineInMemory = line;
}
if(evt.getKeyCode() == KeyEvent.VK_SPACE) {
word = word.replaceAll("null","");
line += word;
word = "";
String text = textarea.getText();
String[] words = line.split(" ");
if(word.toLowerCase().equals("class")) {
// What the heck do I put here?!
}
}
}
});
我已经有了关键的听众,他们阅读了这些键,将它们写成了单词,然后将这些单词放入句子中。我希望它能够输入关键字并在关键字输入时自动更改关键字的颜色,有点像Sublime Text的功能。
答案 0 :(得分:1)
JTextArea
仅用于包含纯文本,不能为某些单词着色。如果您希望能够为不同的单词着色,则需要使用JTextPane或JEditorPane。
有关详细信息,请参阅此question。这个question也可能有所帮助(特别是第二个答案)。
以下是一个例子:
JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();
Style style = textPane.addStyle("Style", null);
StyleConstants.setForeground(style, Color.red);
String word = "Hello";
if (word.equals("Hello")) {
try {
doc.insertString(doc.getLength(), word, style);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
} else {
StyleConstants.setForeground(style, Color.blue);
try {
doc.insertString(doc.getLength(), word, style);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
这会产生一个字符串word
。如果单词为"Hello"
,则它将以红色显示,否则将以蓝色显示。