Swing/HideCaret の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/HideCaret へ行く。
- Swing/HideCaret の差分を削除
--- category: swing folder: HideCaret title: JTextAreaなどのCaretを非表示にする tags: [JTextArea, JTextComponent, DefaultCaret, Focus] author: aterai pubdate: 2017-01-02T02:13:16+09:00 description: JTextAreaなどのCaretを非表示にするテストを行います。 image: https://drive.google.com/uc?id=1K6e6fysV1_WfG9uuYpD3nh1eKFVrGTfr6g --- * 概要 [#summary] `JTextArea`などの`Caret`を非表示にするテストを行います。 #download(https://drive.google.com/uc?id=1K6e6fysV1_WfG9uuYpD3nh1eKFVrGTfr6g) * サンプルコード [#sourcecode] #code(link){{ textArea.setCaret(new DefaultCaret() { @Override public boolean isVisible() { return false; } }); }} * 解説 [#explanation] - `Hide Caret` -- `DefaultCaret#isVisible()`が常に`false`を返すようにオーバーライドした`Caret`を`JTextArea`に設定することで非表示化 -- `JTextArea#setCaret(null)`のように`null`を設定すると`NullPointerException`が発生する -- `textArea.getCaret().deinstall(textArea)`を実行するとカーソルキーの移動などで`NullPointerException`が発生する - `Hide Highlighter` -- `JTextArea#setHighlighter(null)`のように`null`を設定して選択ハイライトを非表示にする - `Editable` -- `JTextArea#setEditable(false)`を設定すると編集不可になり、選択は可能だが`Caret`は非表示になる -- [https://bugs.openjdk.org/browse/JDK-4512626 [JDK-4512626] Non-editable JTextArea provides no visual indication of keyboard focus - Java Bug System]で編集不可でも`Caret`が非表示にならないよう修正される - `Focusable` -- `JTextArea#setFocusable(false)`を設定すると選択不可になり、結果`Caret`も選択ハイライトも非表示になる * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/DefaultCaret.html#isVisible-- DefaultCaret#isVisible() (Java Platform SE 8)] - [https://bugs.openjdk.org/browse/JDK-4512626 [JDK-4512626] Non-editable JTextArea provides no visual indication of keyboard focus - Java Bug System] * コメント [#comment] #comment #comment