• 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

概要

JTextAreaなどのCaretを非表示にするテストを行います。

サンプルコード

textArea.setCaret(new DefaultCaret() {
  @Override public boolean isVisible() {
    return false;
  }
});
View in GitHub: Java, Kotlin

解説

  • Hide Caret
    • DefaultCaret#isVisible()が常にfalseを返すようにオーバーライドしたCaretJTextAreaに設定することで非表示化
    • JTextArea#setCaret(null)のようにnullを設定すると、NullPointerExceptionが発生する
    • textArea.getCaret().deinstall(textArea)を実行すると、カーソルキーの移動などでNullPointerExceptionが発生する
  • Hide Highlighter
    • JTextArea#setHighlighter(null)のようにnullを設定して選択ハイライトを非表示にする
  • Editable
    • JTextArea#setEditable(false)を設定すると編集不可になり、選択は可能だがCaretは非表示になる
  • Editable
    • JTextArea#setFocusable(false)を設定すると選択不可になり、結果Caretも選択ハイライトも非表示になる

参考リンク

コメント