Один из способов справиться с этим - изменить поведение по умолчанию закрытия окна и добавить WindowListener, который улавливает событие закрытия окна и выполняет сохранение там.
Простой пример, который можно добавить в Класс DisplayPanel (сразу после создания объекта jFrame):
theFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
theFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
String[] lines = theText.getText().split("\\n");
try (BufferedWriter writer = new BufferedWriter(new FileWriter("newfile.txt"))) {
for (String line : lines)
writer.write(line + "\n");
} catch (IOException i) {
System.out.println("Cannot write file...");
}
System.out.println("File saved!");
System.exit(0);
}
});
При закрытом окне код выше сохранит измененный текст в файле newfile.txt
.
В приведенном выше примере расщепление на строки, вероятно, не нужно; вы, вероятно, получите правильный результат, просто выполнив writer.write(theText.getText());
.
Некоторая соответствующая документация: