私はこのスレッドが方法を示していることを知っていますが、私の場合は奇妙な振る舞いにつながり、もっと簡単な方法はないのではないかと思います。
JTextArea
テキストを設定した後のサイズを知る必要があります。これが私が今している方法です:
tarea.getLineCount() * tarea.getRowHeight();
行の折り返しがない場合を除いて機能します。行の折り返しでも同じ計算を行いたいのですが。行の折り返しがいつ発生するかを知るために何かありますか?このようにすると、現在の行数を1つ増やすだけで済みます。
編集:
これが(たぶん)私が見つけた解決策です。@camickrによるこれのほとんどコピーペーストです。
int rowStartOffset = textComponent.viewToModel(new Point(0, 0));
int endOffset = textComponent.viewToModel(new Point(0, textComponent.getHeight()));
int count = 0; //used to store the line count
while (rowStartOffset < endOffset) {
try {
rowStartOffset = Utilities.getRowEnd(textComponent, rowStartOffset) + 1;
} catch (BadLocationException ex) {
break;
}
count++;
}
行の折り返しを有効にした場合と有効にしない場合で、いくつかのテストを行いましたが、機能しているように見えました。