JTextAreaの最終行を超えてスクロール可能にする
Total: 2351
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTextArea
の高さを拡張し、その最終行を超えてスクロール可能になるよう設定します。
Screenshot
Advertisement
サンプルコード
JTextArea textArea = new JTextArea() {
@Override public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
Container c = SwingUtilities.getAncestorOfClass(JScrollPane.class, this);
if (c instanceof JScrollPane && isEditable()) {
Rectangle r = ((JScrollPane) c).getViewportBorderBounds();
d.height += r.height - getRowHeight() - getInsets().bottom;
}
return d;
}
};
View in GitHub: Java, Kotlin解説
- デフォルトではテキストの最終行までが
JTextArea
の推奨サイズとなり、その最終行までがスクロール可能領域となる- メモ帳(
notepad.exe
)などの動作と同じ
- メモ帳(
JTextArea#getPreferredSize()
メソッドをオーバーライドし、JViewport
の高さからJTextArea
の一行分を除いた高さを拡張し、最終行が表示上の先頭行になるまでスクロール可能に設定- 上記のサンプルでは
JTextArea
が編集可能の場合、最終行を超えてスクロール可能に設定している Visual Studio Code
などのエディタのデフォルト?IntelliJ IDEA
ではエディタの設定からShow virtual space at file bottom
で変更可能
- 上記のサンプルでは