私は、ユーザーがコンテンツを変更できる場所にjtextareaを作成しました。ユーザーがアプリケーションを閉じる前に内容を変更したかどうかについては、何らかの方法があるかどうかを知りたいと思います。助けてください。
-事前にお問い合わせくださいjtextareaに変更が加えられたかどうかを知る方法は?
4
A
答えて
8
あなたがテキスト領域をバックアップDocumentにDocumentListenerを追加する必要があります。そして
アプリケーション
public class MyPanel implements DocumentListener { private boolean changed; public MyPanel() { JTextArea textArea = new JTextArea(); textArea.getDocument().addDocumentListener(this); ..... } ..... public void insertUpdate(DocumentEvent e) { changed = true; } public void removeUpdate(DocumentEvent e) { changed = true; } public void changedUpdate(DocumentEvent e) { changed = true; } }
1
jtextareaの値を保存し、この値をアプリケーション終了時のjtextareaの値と比較してください。ここ
擬似コードは、テキスト領域のexcact構文を覚えていない:
String oldText = textarea.getText();
....
// not the exact method, just to point the moment of application exit
public onClose() {
String newText = textArea.getText();
// assuming oldText is not null
if (oldText.equals(newText)) {
// no changes have been done
} else {
// the value changed
}
}
を開閉することがされる前に、単に何かが変更されたフラグを設定し、そのフラグをテストし、リスナーのコールバックメソッド(のinsertUpdate()、のremoveUpdate()、のchangedUpdate())でこのためのあまり退屈な解決策はありませんか?私は非常に大きなテキストを持っているので、頻繁に使用するために、テキスト全体を比較することは非常に重い作業になります。 1文字の変更を検出するための事前定義済みの関数はありませんか? – Antrromet
私はこれを単純なものに恐れています。ユーザーが文字を削除して戻す場合に、インテリジェントな検出システムを作成できます。その場合、イベントモデルはテキストが変更されたことを通知しますが、それは真実ではありません。 –