3

文字列が JTextArea の行に分割される方法を計算する信頼できる方法はありますか?

固定幅の JTextArea があり、いっぱいになると新しい行が追加され、垂直方向に拡張されます。

ここで、どの文字がどの行にあるかを正確に知る必要があります。フォント メトリックを使用して 1 文字の幅を合計することはできますが、それが信頼できるものかどうか、またはより良い方法があるかどうかはわかりません。

フォントメトリックの「トリック」が唯一の方法ですか?

4

2 に答える 2

6

すべてのJTextComponentには、役立つメソッドmodelToView(...)とメソッドがありますが、さらに優れているのは、 javax.swing.text.Utilitiesクラスのメソッドです。viewToModel(...)getRowStart(...)getRowEnd(...)

于 2012-10-29T22:25:21.737 に答える
1

modelToView は、ピクセル座標から開始されるため、おそらく OP には役立ちません。getRowStart は、行インデックスではなくオフセットから開始し、オフセットを返すため、間接的にのみ有用です。ここで最も役立つ関数は JTextArea.getLineStartOffset(lineNumber) です。これは、特定の行の先頭のテキスト開始からのオフセットを返し、逆の JTextArea.getLineOfOffset(offset) を返します。(今日、同様の問題でこのページに出くわしたときに、この回答がここにあればよかったのに:-))

于 2012-11-20T11:05:11.063 に答える