概要

DefaultHighlighterの描画方法を変更して、文字列が選択されている場合のハイライト表示を変更します。

サンプルコード

DefaultHighlighter dh = (DefaultHighlighter) textArea.getHighlighter();
dh.setDrawsLayeredHighlights(false);
view all

解説

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

参考リンク

コメント