Swing/ScrollBeyondLastLine のバックアップ(No.7)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ScrollBeyondLastLine へ行く。
- category: swing
folder: ScrollBeyondLastLine
title: JTextAreaの最終行を超えてスクロール可能にする
tags: [JScrollPane, JTextArea, JViewport]
author: aterai
pubdate: 2019-08-19T00:02:28+09:00
description: JTextAreaの高さを拡張し、その最終行を超えてスクロール可能になるよう設定します。
image: https://drive.google.com/uc?id=1_1B-E0sbvJ_4AiKUHMQMXYRsmUodk-BB
hreflang:
href: https://java-swing-tips.blogspot.com/2022/09/make-editable-jtextarea-scrollable.html lang: en
Summary
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
で変更可能
- 上記のサンプルでは