---
category: swing
folder: CaretWidth
title: JTextComponentで使用されるCaretの幅を変更する
tags: [Caret, JTextComponent]
author: aterai
pubdate: 2020-07-06T02:13:21+09:00
description: JTextFieldやJTextAreaなどのJTextComponentで使用されるCaretの幅を変更します。
image: https://drive.google.com/uc?id=1yXj9mvzo3Ary_OohlWvmmV2DQXZiSG1O
---
* 概要 [#summary]
`JTextField`や`JTextArea`などの`JTextComponent`で使用される`Caret`の幅を変更します。

#download(https://drive.google.com/uc?id=1yXj9mvzo3Ary_OohlWvmmV2DQXZiSG1O)

* サンプルコード [#sourcecode]
#code(link){{
UIManager.put("Caret.width", 2);
JTextField field1 = new JTextField("Caret.width: 2");

JTextField field2 = new JTextField("caretWidth: 4");
field2.putClientProperty("caretWidth", 4);

JTextField field3 = new JTextField("caretAspectRatio: 0.4");
field3.putClientProperty("caretAspectRatio", .4f);
}}

* 解説 [#explanation]
- `Caret.width`
-- `UIManager.put("Caret.width", 2)`を使用してすべての`JTextComponent`で`Caret`の幅を変更
- `caretWidth`
-- `JComponent#putClientProperty("caretWidth", 4)`で指定したコンポーネントの`Caret`の幅を変更
- `caretAspectRatio`
-- `JComponent#putClientProperty("caretAspectRatio", .4f)`で指定したコンポーネントの`Caret`の幅を高さとの比率で変更

----
- `Caret`幅のデフォルトは`1px`
-- `WindowsLookAndFeel`での`Caret`幅のデフォルトはコントロールパネルで指定した幅になる
-- [https://bugs.openjdk.java.net/browse/JDK-6994562 [JDK-6994562] Swing classes (both JTextArea and JTextField) don't support caret width tuning - Java Bug System]
- `Caret`の幅に負の値を設定した場合`1px`に初期化される
- `Caret`の幅を`0px`に設定すると`Caret`が非表示になる
-- [[JTextAreaなどのCaretを非表示にする>Swing/HideCaret]]

* 参考リンク [#reference]
- [https://bugs.openjdk.java.net/browse/JDK-6994562 [JDK-6994562] Swing classes (both JTextArea and JTextField) don't support caret width tuning - Java Bug System]
- [[JTextAreaなどのCaretを非表示にする>Swing/HideCaret]]

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