Я пытаюсь открыть новое окно при нажатии гиперссылки.По какой-то причине это сработало один раз, и тогда я никогда не смог заставить его работать снова.Каждый раз, когда я запускаю его, я получаю ошибку javafx.fxml.LoadException: Root value already specified.
.Дело в том, что я нигде не установил корневое значение.
Я пытался loader.setRoot(null)
, но это ничего не сделало.Я никогда не устанавливал корень в моем fxml или обычном методе, поэтому я не уверен, откуда он это получает.
Это метод для загрузки нового окна
@FXML
private void initialize(){
messageSupports.setOnMouseClicked(e -> {
try {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/MessagingSupportLayout.fxml"));
// Parent root = (Parent) loader.load();
Stage secondaryStage = new Stage();
loader.setController(new MessagingSupport(mainController));
mainController.getContentPane().getChildren().add(loader.load());
secondaryStage.setTitle("Support");
secondaryStage.setHeight(500);
secondaryStage.setWidth(350);
Scene scene = new Scene(loader.load());
secondaryStage.setScene(scene);
secondaryStage.show();
} catch (IOException ex) {
ex.printStackTrace();
}
});
}
}
вот текст для MessagingSupportLayout.fxml
.
<BorderPane xmlns="http://javafx.com/javafx"
prefHeight="400.0" prefWidth="600.0">
</BorderPane>
Ожидаемые результаты - откроется новое окно.Я устанавливаю заголовок первого окна, высоту, ширину в моем основном классе в методе запуска.Я не объявляю рут там или в fxml для этого.Я могу опубликовать это, если вам нужно это увидеть.Спасибо за помощь!