我想建立一个样本,以从与我的应用程序过滤器匹配的单词中删除突出显示的内容。因此,我将自己基于以下示例:
public void removeHighlights(JTextComponent jTextArea) {
Highlighter hilite = jTextArea.getHighlighter();
Highlighter.Highlight[] hilites = hilite.getHighlights();
for (int i = 0; i < hilites.length; i++) {
if (hilites[i].getPainter() instanceof TextHighLighter) {
hilite.removeHighlight(hilites[i]);
}
}
}
此示例的作用是删除文本区域的所有突出显示。例如,如果我选择了三个单词,并且取消选中其中一个,则所有过滤器都将被删除,而我只想删除未选中单词的突出显示。是否有一种简单的方法来检查哪个单词与过滤器匹配?还是我需要手动进行?直到现在,我发现我的研究没有成功
提前致谢
最后编辑:
基于@camickr答案的逻辑为我工作:
public void removeHighlights(JTextComponent jTextArea, String turnLightOff) {
Highlighter hilite = jTextArea.getHighlighter();
Highlighter.Highlight[] hilites = hilite.getHighlights();
for (int i = 0; i < hilites.length; i++) {
int wordLenght = hilites[i].getEndOffset() - hilites[i].getStartOffset();
if(wordLenght == turnLightOff.length()){
if (hilites[i].getPainter() instanceof TextHighLighter) {
hilite.removeHighlight(hilites[i]);
}
}
}
}