Ich habe eine ArrayList von Strings, die in einem Textbereich angezeigt wird, und ich versuche, den Textmarker bei jedem Aufruf dieser Methode um ein Wort zu verschieben, aber es hebt das vorherige Wort hervor, weil es stattdessen ein Duplikat ist von der nächsten. Hier ist mein Code:Wie ein doppeltes Wort hervorheben?
ArrayList<String> words = new ArrayList<String>();
words.add("Word1"); //Keeps highlighting this one twice
words.add("Word2");
words.add("Word1"); //Instead of highlighting this one
words.add("Word3");
for(String other : words)
{
textArea.setText(textArea.getText() + "\n" + other);
}
int wordNum = 0;
String word = words.get(wordNum++);
Highlighter highlighter = textArea.getHighlighter();
HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.blue);
int p0 = textArea.getText().indexOf(word);
int p1 = p0 + word.length();
try
{
highlighter.removeAllHighlights();
highlighter.addHighlight(p0, p1, painter);
} catch (BadLocationException ex)
{
ex.printStackTrace();
return;
}