文字列が JTextArea の行に分割される方法を計算する信頼できる方法はありますか?
固定幅の JTextArea があり、いっぱいになると新しい行が追加され、垂直方向に拡張されます。
ここで、どの文字がどの行にあるかを正確に知る必要があります。フォント メトリックを使用して 1 文字の幅を合計することはできますが、それが信頼できるものかどうか、またはより良い方法があるかどうかはわかりません。
フォントメトリックの「トリック」が唯一の方法ですか?
すべてのJTextComponentには、役立つメソッドmodelToView(...)
とメソッドがありますが、さらに優れているのは、 javax.swing.text.Utilitiesクラスのメソッドです。viewToModel(...)
getRowStart(...)
getRowEnd(...)
modelToView は、ピクセル座標から開始されるため、おそらく OP には役立ちません。getRowStart は、行インデックスではなくオフセットから開始し、オフセットを返すため、間接的にのみ有用です。ここで最も役立つ関数は JTextArea.getLineStartOffset(lineNumber) です。これは、特定の行の先頭のテキスト開始からのオフセットを返し、逆の JTextArea.getLineOfOffset(offset) を返します。(今日、同様の問題でこのページに出くわしたときに、この回答がここにあればよかったのに:-))