Swing/RemoveAllHighlights の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/RemoveAllHighlights へ行く。
- Swing/RemoveAllHighlights の差分を削除
--- category: swing folder: RemoveAllHighlights title: JTextAreaに設定したHighlightをすべて削除する tags: [JTextArea, JTextComoponent, Highlighter, Caret] tags: [JTextArea, JTextComponent, Highlighter, Caret] author: aterai pubdate: 2021-12-06T00:41:02+09:00 description: JTextAreaに設定したHighlightをすべて削除、または選択ハイライトを除いてすべて削除します。 image: https://drive.google.com/uc?id=13EoqnIUuuaRLWAFig-StZjIE9KsRyQaU --- * 概要 [#summary] `JTextArea`に設定した`Highlight`をすべて削除、または選択ハイライトを除いてすべて削除します。 #download(https://drive.google.com/uc?id=13EoqnIUuuaRLWAFig-StZjIE9KsRyQaU) * サンプルコード [#sourcecode] #code(link){{ 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); } } } }} * 解説 [#explanation] - `removeAllHighlights` -- `JTextComponent#getHighlighter()#removeAllHighlights()`ですべてのハイライトを削除 -- マウスやカーソルキーで文字列選択した場合のハイライトも削除される - `removeWordHighlights` -- 文字列選択のハイライト以外のハイライトを削除 -- このサンプルではキャレット下の単語で全テキストを検索して一致する単語を黄色の`HighlightPainter`でハイライトしているので、このペインターを使用している`Highlighter.Highlight`を`Highlighter#getHighlights()`から検索し`Highlighter#removeHighlight(...)`で削除 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/Highlighter.html#removeAllHighlights-- Highlighter#removeAllHighlights() (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/Highlighter.html#removeHighlight-java.lang.Object- Highlighter##removeHighlight(Object) (Java Platform SE 8)] - [[JTextPaneで検索結果のハイライト表示と文字色変更を同時に行う>Swing/HighlightTextForeground]] * コメント [#comment] #comment #comment