I want to read in text the user inputs and then highlight a specific word and return it to the user. I am able to read in the text and give it back to the user, but I cant figure out how to highlight a single word. How can I highlight a single word in a JTextArea using java swing?
Asked
Active
Viewed 2.3k times
6
-
3You could use a Highlighter such as a DefaultHighlighter and call `addHighlight(...)` to your JTextArea, but if it is any bit more complicated than that, use a different text component. – Hovercraft Full Of Eels Dec 03 '13 at 02:34
1 Answers
17
Use the DefaultHighlighter that comes with your JTextArea. For e.g.,
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));
}
}

Hovercraft Full Of Eels
- 283,665
- 25
- 256
- 373
-
how can I highlighted a text by clicking on it and read it after that? – Kick Buttowski Jul 20 '14 at 05:00
-
-
@Volazh: they are just dummy variables, p0 holding the index to the beginning of the highlighted word and p1 the index to the end of the word, as the code shows. – Hovercraft Full Of Eels Jul 25 '16 at 16:39