Swing/ScrollBeyondLastLine の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ScrollBeyondLastLine へ行く。
- 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`の高さを拡張し、その最終行を超えてスクロール可能になるよう設定します。 #download(https://drive.google.com/uc?id=1_1B-E0sbvJ_4AiKUHMQMXYRsmUodk-BB) * サンプルコード [#sourcecode] #code(link){{ 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; } }; }} * 解説 [#explanation] - デフォルトではテキストの最終行までが`JTextArea`の推奨サイズとなり、その最終行までがスクロール可能領域となる -- メモ帳(`notepad.exe`)などの動作と同じ - `JTextArea#getPreferredSize()`メソッドをオーバーライドし、`JViewport`の高さから`JTextArea`の一行分を除いた高さを拡張し、最終行が表示上の先頭行になるまでスクロール可能に設定 -- 上記のサンプルでは`JTextArea`が編集可能の場合、最終行を超えてスクロール可能に設定している -- `Visual Studio Code`などのエディタのデフォルト? -- `IntelliJ IDEA`ではエディタの設定から`Show virtual space at file bottom`で変更可能 --- [https://stackoverflow.com/questions/36715803/scrolling-past-the-end-in-idea Scrolling past the end in IDEA - Stack Overflow] * 参考リンク [#reference] - [https://stackoverflow.com/questions/32679335/java-jtextarea-allow-scrolling-beyond-end-of-text swing - Java JTextArea allow scrolling beyond end of text - Stack Overflow] - [[JTextAreaに行番号を表示>Swing/LineNumber]] * コメント [#comment] #comment #comment