@FXML
private AnchorPane anchorPane;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
Stage currentStage = (Stage) anchorPane.getScene().getWindow();
windowManager = new WindowManager(currentStage);
}
В этом случае возникает NullPointerException, поскольку AnchorPane еще не загружен. Я конечно могу получить объект и не на этапе инициализации, но мне нужно создать экземпляр некого WindowManager с передачей Stage в конструктор, и желательно это сделать сразу, чем я потом буду в каждый метод добавлять проверку на то, не создан ли у меня уже WindowManager.
Вообщем, возможно есть интерфейс типа Initializable, выполняющийся после инициализации, или может можно получить Stage как-то по другому?
Придумал довольно интересное решение своей проблемы: в конструктор WindowManager можно передать реализацию функционального интерфейса Supplier. Таким образом мы получаем возможность вызова объекта Stage тогда, когда он уже будет доступен.
@FXML
private AnchorPane anchorPane;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
windowManager = new WindowManager(() -> (Stage) anchorPane.getScene().getWindow());
}
Продвижение своими сайтами как стратегия роста и независимости