---
category: swing
folder: DrawsLayeredHighlights
title: DefaultHighlighterの描画方法を変更する
tags: [DefaultHighlighter, JTextArea, JTextComponent]
author: aterai
pubdate: 2013-08-26T00:05:12+09:00
description: DefaultHighlighterの描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。
image: https://lh6.googleusercontent.com/-yXndYI0LTyA/UhoR8XLek3I/AAAAAAAABy0/BpEfTjjAGwU/s800/DrawsLayeredHighlights.png
---
* 概要 [#summary]
`DefaultHighlighter`の描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。

#download(https://lh6.googleusercontent.com/-yXndYI0LTyA/UhoR8XLek3I/AAAAAAAABy0/BpEfTjjAGwU/s800/DrawsLayeredHighlights.png)

* サンプルコード [#sourcecode]
#code(link){{
DefaultHighlighter dh = (DefaultHighlighter) textArea.getHighlighter();
dh.setDrawsLayeredHighlights(false);
}}

* 解説 [#explanation]
- `DefaultHighlighter#setDrawsLayeredHighlights(true)`
-- デフォルト
-- 文字列の描画直前にハイライトも描画されるため、文字列の選択描画より手前にハイライトの矩形が表示される
-- 選択時の文字色が反転する場合(`MetalLookAndFeel`以外の`LookAndFeel`など)、ハイライトの色によっては見づらくなる
- `DefaultHighlighter#setDrawsLayeredHighlights(false)`
-- 選択されている文字列の背景だけではなく、テキストエリアの右端や、範囲内の空行も選択色で塗り潰される
-- 文字列の選択描画より奥にハイライトが表示されるため、ハイライトの矩形は塗り潰されて非表示となる
-- 文字列選択で、ハイライトされている箇所がわかりづらくなる
-- `HTMLEditorKit`と合わせて使用する場合、改行を含む文字列を選択すると選択の描画がおかしくなる?
-- `HTMLEditorKit`と合わせて使用する場合、改行を含む文字列を選択すると選択状態の描画がおかしくなる?

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/DefaultHighlighter.html#setDrawsLayeredHighlights-boolean- DefaultHighlighter#setDrawsLayeredHighlights(boolean) (Java Platform SE 8)]

* コメント [#comment]
#comment
#comment