编程语言
首页 > 编程语言> > 从特定单词中删除突出显示 – Java

从特定单词中删除突出显示 – Java

作者:互联网

我想构建一个示例以从与我的应用的过滤器匹配的单词中删除高亮显示.因此,我基于以下示例:

    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]);
              }

              }
           }                
}

解决方法:

Is there a simple way to check which word matches the filter?

没有.

or do I need to do it manually?

是.每个突出显示都包含突出显示的开始/结束偏移.因此,您可以使用这些值从Document中获取文本.如果文本匹配,则删除突出显示.

标签:jtextarea,java,highlight,swing,swing-highlighter
来源: https://codeday.me/bug/20190725/1533375.html