为了学校,我正在尝试使用Java的Swing重新创建Microsoft的记事本程序。 我正在处理保存和打开.txt文件,并且正在寻找一种方法使程序能够检测到文档是否发生更改。 如果检测到更改并且用户选择打开或创建新文件,则希望程序在继续之前提示用户是否要保存更改。
我的想法是创建一个标志,称为
然而,我了解到Java类无法同时实现多个接口,而我已经在使用ActionListener来实现记事本菜单栏的项目。我的问题是,有没有办法在同一类中同时使用TextListener和ActionListener(或任何其他监听器)?如果不行,那么检测文档更改的最佳方法是什么?
我的想法是创建一个标志,称为
documentChanged
,其最初为false,并且每当对JTextArea
进行更改时将其设置为true。 为了检测此更改,我考虑使用TextListener
,如下所示:public class JNotepad implements ActionListener
{
boolean documentChanged;
JTextArea notepad;
JNotepad()
{
documentChanged = false;
notepad = new JTextArea();
notepad.addTextListener(new TextListener() {
public void textValueChanged(TextEvent te) {
documentChanged = true;
}
});
}
}
然而,我了解到Java类无法同时实现多个接口,而我已经在使用ActionListener来实现记事本菜单栏的项目。我的问题是,有没有办法在同一类中同时使用TextListener和ActionListener(或任何其他监听器)?如果不行,那么检测文档更改的最佳方法是什么?
DocumentListener
代替。https://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html - Vighanesh Gursalejava.lang.String
API文档作为一个例子。 - William Price