如何知道jtextarea是否有任何变化?

时间:2011-01-29 10:00:30

标签: java swing jtextarea

我创建了一个jtextarea,用户可以在其中修改其内容。我想知道,如果有任何办法,用户是否在关闭应用程序之前修改了其内容。请帮忙。
   - 提前谢谢

2 个答案:

答案 0 :(得分:8)

您需要向支持文本区域的DocumentListener添加Document

然后在侦听器的回调方法(insertUpdate(),removeUpdate(),changedUpdate())中,只需设置一个标志即某些内容已更改并在关闭应用程序之前测试该标志

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 :(得分:1)

保存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
  }

}