2011-01-29 5 views
4

私は、ユーザーがコンテンツを変更できる場所にjtextareaを作成しました。ユーザーがアプリケーションを閉じる前に内容を変更したかどうかについては、何らかの方法があるかどうかを知りたいと思います。助けてください。
-事前にお問い合わせくださいjtextareaに変更が加えられたかどうかを知る方法は?

答えて

8

あなたがテキスト領域をバックアップDocumentDocumentListenerを追加する必要があります。そして

アプリケーション

 
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 
    } 

} 
+0

を開閉することがされる前に、単に何かが変更されたフラグを設定し、そのフラグをテストし、リスナーのコールバックメソッド(のinsertUpdate()、のremoveUpdate()、のchangedUpdate())でこのためのあまり退屈な解決策はありませんか?私は非常に大きなテキストを持っているので、頻繁に使用するために、テキスト全体を比較することは非常に重い作業になります。 1文字の変更を検出するための事前定義済みの関数はありませんか? – Antrromet

+0

私はこれを単純なものに恐れています。ユーザーが文字を削除して戻す場合に、インテリジェントな検出システムを作成できます。その場合、イベントモデルはテキストが変更されたことを通知しますが、それは真実ではありません。 –