Как узнать, были ли внесены какие-либо изменения в jtextarea или нет? - PullRequest
4 голосов
/ 29 января 2011

Я создал jtextarea, где пользователь может изменять его содержимое. Я хочу знать, если есть какой-либо способ, изменил ли пользователь свой контент или нет перед закрытием приложения. Пожалуйста, помогите.
-Спасибо заранее

Ответы [ 2 ]

8 голосов
/ 29 января 2011

Вам необходимо добавить DocumentListener к Документу , который поддерживает текстовую область.

Затем в методах обратного вызова (insertUpdate (), removeUpdate (), changeUpdate ()) слушателя просто установите флаг, что что-то изменилось, и проверьте этот флаг перед закрытием приложения

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 голос
/ 29 января 2011

Сохраните значение jtextarea и сравните его со значением jtextarea в момент закрытия приложения.

Здесь псевдокод, не запоминает точный синтаксис текстовой области:

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
  }

}
...