Swing/SelectionHighlightPainter のバックアップ(No.9)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SelectionHighlightPainter へ行く。
- 1 (2016-08-22 (月) 08:54:50)
- 2 (2016-08-23 (火) 17:42:28)
- 3 (2017-02-20 (月) 19:40:38)
- 4 (2017-02-28 (火) 17:51:53)
- 5 (2017-10-06 (金) 14:51:44)
- 6 (2018-02-15 (木) 14:23:42)
- 7 (2019-04-04 (木) 14:25:07)
- 8 (2021-01-12 (火) 10:28:57)
- 9 (2022-09-09 (金) 16:01:08)
- 10 (2024-11-20 (水) 11:28:38)
- 11 (2025-01-03 (金) 08:57:02)
- 12 (2025-01-03 (金) 09:01:23)
- 13 (2025-01-03 (金) 09:02:38)
- 14 (2025-01-03 (金) 09:03:21)
- 15 (2025-01-03 (金) 09:04:02)
- category: swing folder: SelectionHighlightPainter title: JTextComponentの選択ハイライトを変更 tags: [JTextComponent, DefaultCaret, Highlighter.HighlightPainter] author: aterai pubdate: 2016-08-22T08:53:24+09:00 description: JTextComponentのサブクラスで文字列選択する際に使用するハイライトの背景色や形状を変更します。 image: https://drive.google.com/uc?id=1jKS8v_MfiUwAw1tg6tJVXOKcyTj7i21NZA
概要
JTextComponent
のサブクラスで文字列選択する際に使用するハイライトの背景色や形状を変更します。
Screenshot

Advertisement
サンプルコード
Highlighter.HighlightPainter selectionPainter =
new DefaultHighlighter.DefaultHighlightPainter(Color.WHITE) {
@Override public Shape paintLayer(
Graphics g, int offs0, int offs1, Shape bounds, JTextComponent c, View view) {
Shape s = super.paintLayer(g, offs0, offs1, bounds, c, view);
if (s instanceof Rectangle) {
Rectangle r = (Rectangle) s;
g.setColor(Color.ORANGE);
g.fillRect(r.x, r.y + r.height - 2, r.width, 2);
}
return s;
}
};
Caret caret = new DefaultCaret() {
@Override protected Highlighter.HighlightPainter getSelectionPainter() {
return selectionPainter;
}
};
caret.setBlinkRate(field2.getCaret().getBlinkRate());
field2.setSelectedTextColor(Color.RED);
field2.setCaret(caret);
View in GitHub: Java, Kotlin解説
Default
- 選択ハイライトには、
LookAndFeel
毎に指定されたHighlighter.HighlightPainter
が使用される
- 選択ハイライトには、
JTextComponent#setSelectionColor(...)
JTextComponent#setSelectionColor(...)
メソッドを使用して選択ハイライトの背景色を変更
JTextComponent#setCaret(...)
DefaultCaret#getSelectionPainter()
メソッドをオーバーライドして選択ハイライトの色と形状を変更したDefaultHighlighter.DefaultHighlightPainter
を返すCaret
を作成し、これをJTextComponent
に設定
参考リンク
- DefaultHighlighter.DefaultHighlightPainter (Java Platform SE 8)
- Rectangle Painter « Java Tips Weblog