Ответ 1
Если вы посмотрите жизненный цикл класса Application
:
Время выполнения JavaFX делает следующее, в порядке, когда запускается приложение:
- Создает экземпляр указанного класса Application
- Вызывает метод
init()
- Вызывает метод
start(javafx.stage.Stage)
- Ожидает завершения работы приложения, которое происходит, когда происходит одно из следующих событий:
- приложение вызывает
Platform.exit()
- последнее окно было закрыто, а атрибут
implicitExit
наPlatform
-true
- Вызывает метод
stop()
Это означает, что вы можете вызывать Platform.exit()
на вашем контроллере:
@FXML
public void exitApplication(ActionEvent event) {
Platform.exit();
}
если вы переопределите метод stop()
основного класса, чтобы сохранить файл.
@Override
public void stop(){
System.out.println("Stage is closing");
// Save file
}
Как вы можете видеть, с помощью stop()
вам больше не нужно слушать запросы на закрытие, чтобы сохранить файл (хотя вы можете сделать это, если хотите предотвратить закрытие окна).