3

私は JTextAreas を持っていて、それに追加、削除、または変更された文字を取得する必要があります。どうすればいいですか?

4

4 に答える 4

0

オフセットと長さ (さらには source Document) を取得できるため、そこから文字を読み取ることができます。削除された文字が何であるかを確認したい場合は、ドキュメントの内容のコピーを保持する必要があります。

Swing ドキュメントはスレッドセーフであるはずです (へへ)。しかし、他のスレッドで複数の変更が発生した場合 (イベントは常に EDT で起動され、より楽しくなります)、文字データが最新ではない可能性があります。これについてできることはあまりありません。他のイベント リスナーでさえも、文書の内容を間接的に変更する可能性があります。

一般に、イベントでの簡単なアプローチは、イベント オブジェクトを完全に無視することです。知っておく必要があるのは、リッスンしているオブジェクトで何かが変更された (変更された可能性がある) ことだけです。これにより、堅牢で理解しやすいコードが得られます。本当に変更に取り組む必要がある場合DocumentFilterは、camickr が言及しているのは、swingall.jar 以降に Swing に追加された便利なものです (ネイティブ L&F 忠実度の向上以外)。

(多くの人がDocumentListener.changedUpdateのドキュメントを読み損ねていることに注意してください。これは、文字ではなく、属性の変更に適用されます。)

于 2009-10-04T20:14:26.620 に答える