Я новичок, когда дело доходит до JavaFX, и недавно я столкнулся с проблемой, которая меня очень смущает. Я использую класс под названием «MainController», который управляет FXML-файлом, содержащим TabPane. Каждая вкладка управляется другим контроллером. Но есть одна ситуация, когда вкладку необходимо удалить, поэтому мне нужен доступ к экземпляру MainController, чтобы удалить текущую активную вкладку с панели.
Всякий раз, когда я использую этот код для получения экземпляра работающего в данный момент MainController, вместо этого я получаю совершенно новый экземпляр со всеми его компонентами, установленными на значения по умолчанию.
Код:
FXMLLoader loader = new FXMLLoader(getClass().getResource("Main.fxml"));
loader.load();
MainController controller = loader.getController();
controller.closeCurrentTab();
protected void closeCurrentTab() {
tabPane.getTabs().remove(tabPane.getSelectionModel().getSelectedIndex());
}
В настоящее время я использую статическую ссылку на контроллер для доступа к нему, поскольку это единственное решение, которое работает для меня. Но я знаю, что это крайне непрофессионально, и я действительно хочу этого избежать.
Надеюсь, кто-нибудь знает, что здесь не так.