Я создаю программу на JAVAFX с F XML.
У меня есть несколько контроллеров F XML, и когда я меняю контроллер, похоже, что предыдущий продолжает работать.
Поэтому, когда я загружаю его второй раз, одновременно работают 2 контроллера.
Например, у меня есть видео на mediaPlayer, которое я слышу дважды одновременно (или больше, если загружаю контроллер больше, чем дважды).
Вот функция в моем основном классе для изменения контроллера:
public void showMainOverview(Integer choixscene){
try {
if(choixscene == 1){
// Load main overview.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("view/MainOverview.fxml"));
AnchorPane mainOverview = (AnchorPane) loader.load();
main = new MainOverviewController();
// Set main overview into the center of root layout.
rootLayout.setCenter(mainOverview);
// Give the controller access to the main app.
main = loader.getController();
main.setMainApp(this);
}else if(choixscene == 2){
// Load main overview.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("view/MaintenanceOverview.fxml"));
AnchorPane mainOverview = (AnchorPane) loader.load();
// Set main overview into the center of root layout.
rootLayout.setCenter(mainOverview);
// Give the controller access to the main app.
MaintenanceOverviewController controller = loader.getController();
controller.setMainApp(this);
}
} catch (IOException e) {
e.printStackTrace();
}
}
В контроллерах я вызываю такую функцию
//button to return to home
public void retouraccueilClicked(){
mainApp.showMainOverview(1);
}
//Call in main class
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
}
Я бы Хотелось бы узнать, как я могу уничтожить контроллер при смене или если я могу загрузить предыдущий и не генерировать новый?