Java 如何知道jtextarea中是否进行了任何更改?

Java 如何知道jtextarea中是否进行了任何更改?,java,swing,jtextarea,Java,Swing,Jtextarea,我已经创建了一个jtextarea,用户可以在其中修改其内容。我想知道,如果有任何方法,用户是否在关闭应用程序之前修改了其内容。请帮忙。 -提前感谢保存jtextarea的值,并在应用程序关闭时将该值与jtextarea的值进行比较 此处的伪代码不记得文本区域的EXACT语法: String oldText = textarea.getText(); .... // not the exact method, just to point the moment of application ex

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

-提前感谢

保存jtextarea的值,并在应用程序关闭时将该值与jtextarea的值进行比较

此处的伪代码不记得文本区域的EXACT语法:

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())中,只需设置一个标志,表明某些内容已更改,并在关闭应用程序之前测试该标志

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; } } 公共类MyPanel 实现DocumentListener { 私有布尔改变; 公共事务委员会() { JTextArea textArea=新的JTextArea(); textArea.getDocument().addDocumentListener(此); ..... } ..... 公共作废插入更新(文档事件e) { 更改=正确; } 公共作废移除更新(文档事件e) { 更改=正确; } 公共作废更改日期(记录事件e) { 更改=正确; } }
有没有比这更乏味的解决方案?为了经常使用,比较整个文本将是一项非常繁重的任务,因为我有非常大的文本。没有预定义的函数来检测单个字符的变化吗?恐怕这是一个简单的函数。您可以为用户删除字符并将其放回的情况编写智能检测系统。在这种情况下,事件模型将告诉您,文本已更改,但不是真的。