5

ある種の色付けをサポートする JTextPane を作成しようとしています。ユーザーがテキストを入力しているとき、特定のアルゴリズムに従ってテキストに色を付けるコードを実行しています。これはうまくいきます。

問題は、カラーリング操作が元に戻すマネージャー (EventType.CHANGE の DefaultDocumentEvent) に登録されていることです。したがって、ユーザーが元に戻すをクリックすると、色が消えます。2 番目の取り消し要求でのみ、テキスト自体がロールバックされます。

(色付けアルゴリズムはやや遅いので、挿入時にテキストに色を付けることができないことに注意してください)。

CHANGE イベントが元に戻すマネージャーに到達しないようにしようとすると、何度か元に戻す要求の後に例外が発生します。これは、ドキュメントの内容が元に戻す編集オブジェクトが期待するものに準拠していないためです。

何か案は?

4

4 に答える 4

1

CHANGEイベントがUNDOマネージャーに到達しないようにするにはどうすればよいですか?

CHANGEがキューに入れられた直後に、UndoManagerにlastEdit()。die()呼び出しを送信することはできませんか?

于 2009-01-06T20:09:15.053 に答える
1

あなたがテキストの色付けをどのように行っているかを推測することしかできません。StyledDocuments の文字属性変更メソッドで実行している場合は、元に戻すリスナーを取得して、その操作のために一時的にドキュメントから登録解除し、色の変更が完了したら、リスナーを再登録できます。

あなたがそこでやろうとしていることには問題ないはずです。

それが役立つことを願っています

于 2009-01-07T02:38:41.103 に答える