Делая @FXML private Label animalName = new Label();
, вы создаете новую метку вместо уже созданной fxml
.Фактически, вы делаете это дважды: эта метка снова инициализируется в openDiagnosticWindow
на animalName = new Label();
Просто используйте @FXML public Label animalName;
Другая проблема заключается в этих строках:
DiagnosticController dc = new DiagnosticController();
dc.openDiagnosticWindow(animalName);
dc
- это ссылка на экземпляр DiagnosticController
, но не экземпляр, используемый fxml
.
Чтобы получить ссылку на контроллер, используемый fxml
, вам необходимо получить его из загрузчика:
FXMLLoader loader = new FXMLLoader();
BorderPane root = loader.load(getClass().getResource("/controller/Diagnostic.fxml") .openStream());
DiagnosticController dc = (DiagnosticController)loader.getController();
, что означает, что загрузка Diagnostic.fxml
должна быть сделана с помощью PetshopController
а не DiagnosticController
.
Для получения дополнительной помощи, пожалуйста, напишите mcve .Отсутствует важная информация (например, как называется опубликованный файл fxml
? Что вызывает PetshopController
? И более), что заставляет нас догадываться.