6

我想阅读用户输入的文本,然后突出显示特定单词并将其返回给用户。我能够阅读文本并将其返回给用户,但我不知道如何突出显示单个单词。如何使用 java swing 突出显示 JTextArea 中的单个单词?

4

1 回答 1

16

使用 JTextArea 附带的 DefaultHighlighter。例如,

import java.awt.Color;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.Highlighter.HighlightPainter;

public class Foo001 {
   public static void main(String[] args) throws BadLocationException {

      JTextArea textArea = new JTextArea(10, 30);

      String text = "hello world. How are you?";

      textArea.setText(text);

      Highlighter highlighter = textArea.getHighlighter();
      HighlightPainter painter = 
             new DefaultHighlighter.DefaultHighlightPainter(Color.pink);
      int p0 = text.indexOf("world");
      int p1 = p0 + "world".length();
      highlighter.addHighlight(p0, p1, painter );

      JOptionPane.showMessageDialog(null, new JScrollPane(textArea));          
   }
}
于 2013-12-03T02:39:47.137 回答