我有一个ArrayList of Strings,该字符串显示在文本区域中,并且每次尝试调用此方法时,我都尝试沿一个单词移动荧光笔,但是它会一直突出显示前一个单词,因为它是重复单词,而不是下一个。这是我的代码:
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;
}
如果要突出显示JTextArea的每个单词,请尝试以下方法,
Highlighter highlighter = jtextArea.getHighlighter();
DefaultHighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.blue);
int front=0;
public void highligtNextWord(JTextArea ta)throws Exception{
String str=ta.getText().trim()+" ";
int end=str.indexOf(" ",front);
highlighter.removeAllHighlights();
highlighter.addHighlight(front, end, painter);
if(end>=str.length()-1)
front=0;
else
front=end+1;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句