• 追加された行はこの色です。
  • 削除された行はこの色です。
---
title: DefaultHighlighterの描画方法を変更する
tags: [DefaultHighlighter, JTextArea, JTextComponent]
author: aterai
pubdate: 2013-08-26T00:05:12+09:00
description: DefaultHighlighterの描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。
---
* 概要 [#i974e690]
`DefaultHighlighter`の描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。

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

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

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

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

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