TITLE:JTextFieldの表示領域をJScrollBarでスクロールする

Posted by at 2014-05-12

JTextFieldの表示領域をJScrollBarでスクロールする

JTextFieldの表示領域をJScrollBarでスクロール可能にします。

HorizontalVisibility.png

サンプルコード

scroller.setModel(textField.getHorizontalVisibility());
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JTextField#getHorizontalVisibility()で取得したBoundedRangeModel(可視領域のモデル)をJScrollBarに設定することで、これを使用したスクロールや現在の可視領域の位置、幅の表示などが可能になっています。

  • 注: ノブの表示
    • 文字列をすべて削除するなどしても、ノブが非表示にならない
  • 注: setCaretPosition: 0
    • JTextField#setCaretPosition(0);JTextFieldにフォーカスが無い場合無効?
    • JScrollBarが同期しない場合がある
  • 注: setScrollOffset: 0
    • JScrollBarのノブがマウスドラッグに反応しなくなる場合がある?

  • JScrollPane scroll = new JScrollPane(new JTextField(TEXT), ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    • 縦スクロールバーを非表示にしたJScrollPaneを使用する場合、JTextField内の文字列選択でスクロールしない
    • 文字列を適当な長さまで削除するとノブが非表示になる

コメント