• ベストアンサー

TextAreaのinsert

TextAreaで現在のキャレット位置に任意文字列が入るようにしたいのですが、たとえば、 textarea.insert( "aaa", textarea.getCaretPosition() ); という風にすると、現在位置ではないところに挿入されます。 どうやら、(現在のキャレット位置+行数)の位置に文字列が挿入されてしまうようです。 行数を割り出してgetCaretPosition()から引く方法も考えられるのですが、他によい方法はなにかありませんでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gishi
  • ベストアンサー率57% (11/19)
回答No.1

試してみたら、たしかに同じような結果になりました。 確信はないですけど、おそらくJava実行環境(JRE)の バグではないかと思います。 このように書けば回避できるようです。 int caret = textarea.getCaretPosition(); String text = textarea.getText(); text = text.substring(0, caret) + "aaa" + text.substring(caret); textarea.setText(text); 蛇足ですけど、 TextArea上で現在選択されているテキストを 置き換えるようにしたいなら、下のように書きます。 int start = textarea.getSelectionStart(); int end = textarea.getSelectionEnd(); String text = textarea.getText(); text = text.substring(0, start) + "aaa" + text.substring(end); textarea.setText(text);

takuro4
質問者

お礼

できました!ありがとうございます!

関連するQ&A