For school, I'm attempting to recreate Microsoft's Notepad program using Java's Swing. I'm working on the saving and opening of .txt files, and I'm trying to figure out a way for the program to detect when a change has been made to the document. If a change has been detected and the user chooses to open or create a new file, I want the program to prompt the user if they would like to save their changes before continuing.
My thought for this was to create a flag, called documentChanged
, that would initially be false, and which would be set to true whenever a change was made to the JTextArea
. To detect this change, I thought of using a TextListener
as follows:
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;
}
});
}
}
However, I learned that Java classes are unable to implement multiple interfaces at once, and I'm already using ActionListener
s to implement the items of my notepad's menu bar.
My question is, is there any way to use both TextListener
and ActionListener
(or any other listener) simultaneously in the same class? If not, what would be my best plan of action for detecting a change in the document?