2

好的,几天前我发了一篇关于在 JTextArea 中删除高亮文本的帖子:

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

问题是,那次我编写了一个代码来删除 Hightlights macthing 其大小......但现在我的应用程序中有很多大小相同的单词,显然应用程序运行不正确。

所以我问,有没有人知道一个库或一种方法来删除每个突出显示的字符串的内容?

4

1 回答 1

1

您可以编写一个方法来获取给定荧光笔的文本:

private static String highlightedText(Highlight h, Document d) {
    int start = h.getStartIndex();
    int end = h.getEndIndex();
    int length = end - start;
    return d.getText(start, length);
}

然后您的removeHighlights方法将如下所示:

public void removeHighlights(JTextComponent c, String toBlackOut) {
    Highlighter highlighter = c.getHighlighter();
    Highlighter.Highlight[] highlights = h.getHighlights();
    Document d = c.getDocument();
    for (Highlighter.Highlight h : highlights)
        if (highlightedText(h, d).equals(toBlackOut) && h.getPainter() instanceof TextHighLighter)
            highlighter.removeHighlight(h);
}
于 2013-10-27T21:24:19.217 回答