概要

JTextAreaに設定したHighlightをすべて削除、または選択ハイライトを除いてすべて削除します。

スクリーンショット

Swing/RemoveAllHighlights.png

サンプルコード

textArea.getHighlighter().removeAllHighlights();
// ...

public static void removeWordHighlights(JTextComponent tc) {
  Highlighter highlighter = tc.getHighlighter();
  for (Highlighter.Highlight hh : highlighter.getHighlights()) {
    if (hh.getPainter().equals(HIGHLIGHT)) {
      highlighter.removeHighlight(hh);
    }
  }
}
View in GitHub: Java, Kotlin

解説

  • removeAllHighlights
    • JTextComponent#getHighlighter()#removeAllHighlights()ですべてのハイライトを削除
    • マウスやカーソルキーで文字列選択した場合のハイライトも削除される
  • removeWordHighlights
    • 文字列選択のハイライト以外のハイライトを削除
    • このサンプルではキャレット下の単語で全テキストを検索して一致する単語を黄色のHighlightPainterでハイライトしているので、このペインターを使用しているHighlighter.HighlightHighlighter#getHighlights()から検索しHighlighter#removeHighlight(...)で削除

参考リンク

コメント