В моем mainController я использую следующий метод для изменения представлений:
@FXML
public void handleChangeView(ActionEvent event) {
try {
String changeButtonID = ((Button) event.getSource()).getId();
FXMLLoader loader = new FXMLLoader(getClass().getResource("../../resources/view/" + changeButtonID + ".fxml"));
mainView.setCenter(loader.load());
} catch (IOException e){
e.printStackTrace();
}
}
Теперь это работает, но у меня есть две проблемы:
1) С каждой кнопкой нажимайте контроллерзагруженного файла FXML запускается снова.Например, в моем другом контроллере у меня есть:
Timeline counterTimeline = new Timeline(new KeyFrame(Duration.seconds(1), e -> System.out.println("Test")));
counterTimeline.setCycleCount(Animation.INDEFINITE);
counterTimeline.play();
С каждым щелчком мыши создается новая временная шкала и устанавливается ее воспроизведение - как я могу гарантировать, что этого не произойдет?Кажется, что каждый раз, когда нажимается кнопка изменения вида контроллера, он повторно инициализируется.
2) Как я могу гарантировать, что каждый контроллер может видеть модель, все еще используя вышеуказанный метод для изменения представлений?Я бы предпочел избегать инъекций зависимостей, потому что я, честно говоря, не могу обернуть голову вокруг этого - после 6 часов, пытаясь заставить afterburner.fx работать, я не могу справиться с этим.