概要
JTextArea
の高さを拡張し、その最終行を超えてスクロール可能になるよう設定します。
スクリーンショット
広告
サンプルコード
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 all解説
- デフォルトではテキストの最終行までが
JTextArea
の推奨サイズとなり、その最終行までがスクロール可能領域となる- メモ帳やブラウザなどの動作と同じ
JTextArea#getPreferredSize()
メソッドをオーバーライドし、JViewport
の高さからJTextArea
の一行分を除いた高さを拡張し、最終行が表示上の先頭行になるまでスクロール可能に設定- 上記のサンプルでは
JTextArea
が編集可能の場合、最終行を超えてスクロール可能に設定している - 多くのテキストエディタのデフォルト?
- 上記のサンプルでは