«fxmlLoadException: корневое значение уже указано», но я никогда не устанавливал корневое значение - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь открыть новое окно при нажатии гиперссылки.По какой-то причине это сработало один раз, и тогда я никогда не смог заставить его работать снова.Каждый раз, когда я запускаю его, я получаю ошибку 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 для этого.Я могу опубликовать это, если вам нужно это увидеть.Спасибо за помощь!

1 Ответ

0 голосов
/ 09 апреля 2019

разобрался.строка mainController.getContentPane().getChildren().add(loader.load()); устанавливает корень.удаление этой строки решает проблему.

...