• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:DefaultHighlighterの描画方法を変更する
#navi(../)
#tags(DefaultHighlighter, JTextArea, JTextComponent)
RIGHT:Posted by &author(aterai); at 2013-08-26
* DefaultHighlighterの描画方法を変更する [#i974e690]
``DefaultHighlighter``の描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。
---
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`の描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。

- &jnlp;
- &jar;
- &zip;
#download(https://lh6.googleusercontent.com/-yXndYI0LTyA/UhoR8XLek3I/AAAAAAAABy0/BpEfTjjAGwU/s800/DrawsLayeredHighlights.png)

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

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

** 解説 [#a3369d81]
- ``DefaultHighlighter#setDrawsLayeredHighlights(ture)``
* 解説 [#explanation]
- `DefaultHighlighter#setDrawsLayeredHighlights(true)`
-- デフォルト
-- 文字列の描画直前にハイライトも描画されるため、文字列の選択描画より手前にハイライトの矩形が表示される
-- 選択時の文字色が反転する場合(``MetalLookAndFeel``以外の``LookAndFeel``など)、ハイライトの色によっては見づらくなる
- ``DefaultHighlighter#setDrawsLayeredHighlights(false)``
-- 文字列の選択描画より奥にハイライトが表示されるため、ハイライトの矩形は塗り潰れさて非表示となる
-- 文字列選択で、ハイライトされている箇所がわかりづらくなる
-- 文字列の描画直前にハイライトも描画されるため文字列の選択描画より手前にハイライトの矩形が表示される
-- `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 )]
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/DefaultHighlighter.html#setDrawsLayeredHighlights-boolean- DefaultHighlighter#setDrawsLayeredHighlights(boolean) (Java Platform SE 8)]

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