键入时重新着色

时间:2014-07-20 15:25:53

标签: java swing colors jtextarea

我想编写一个程序,我会重新着色特定的单词。

像这样:

嘿,我喜欢带骨头的胡萝卜。

我想在输入胡萝卜时自动让它变成蓝色。 哇,我在代码中这样做?

我已经尝试过了:

public void getWord(String whatword){
   if(jtextarea.contains(whatword){
      //Stuck on here
     }  

例如: 如果我输入:

我喜欢胡萝卜和金枪鱼。

我想将胡萝卜和金枪鱼的颜色改为蓝色。 而其他的话需要保持黑色。

现在我不知道如何重新着色这个词,以及if if语句是否有效。 那么,我该如何解决这个问题?

对不起,我是荷兰人,所以你需要用这种语言来做,我想

1 个答案:

答案 0 :(得分:3)

JTextArea仅用于包含纯文本,不能为某些单词着色。如果您希望能够为不同的单词着色,则需要使用JTextPaneJEditorPane

有关详细信息,请参阅此question。这个question也可能有用

以下是一个例子:

JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();

Style style = textPane.addStyle("I'm a 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",则它将以红色显示,否则将以蓝色显示。