家の中でのこだわりスペースはどこですか?

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

A 回答 (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);
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/21 00:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報