Swing/ScrollBeyondLastLine のバックアップ(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ScrollBeyondLastLine へ行く。
- 1 (2019-08-19 (月) 00:04:03)
- 2 (2021-04-07 (水) 13:42:22)
- 3 (2022-09-26 (月) 11:19:10)
- 4 (2022-09-30 (金) 15:13:02)
- 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
概要
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
で変更可能
- 上記のサンプルでは