Java 如何知道jtextarea中是否进行了任何更改?
我已经创建了一个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的值进行比较 此处的伪代码不记得文本区域的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)
{
更改=正确;
}
}
有没有比这更乏味的解决方案?为了经常使用,比较整个文本将是一项非常繁重的任务,因为我有非常大的文本。没有预定义的函数来检测单个字符的变化吗?恐怕这是一个简单的函数。您可以为用户删除字符并将其放回的情况编写智能检测系统。在这种情况下,事件模型将告诉您,文本已更改,但不是真的。