#javafx #fxml #scene
#javafx #fxml #сцена
Вопрос:
Я искал везде в Интернете, но не смог найти прямого ответа на этот простой вопрос: каков наилучший способ переключения сцен в приложении JavaFX? У меня есть несколько файлов FXML и контроллер для каждого из них, и я хочу иметь возможность переключаться между ними как можно быстрее (размер экрана должен оставаться прежним, все в окне должно оставаться неизменным, кроме содержимого).
Есть несколько способов, которые я мог бы придумать, самый распространенный способ — загрузить файл FXML с помощью FXMLLoader, а затем создать новую сцену, а затем установить эту сцену в качестве сцены и, наконец, показать сцену. Это работает, но мне не кажется эффективным, потому что каждый раз, когда я переключаю страницы, программе приходится создавать совершенно новую сцену, а затем назначать ее сцене. Почему этот метод используется чаще всего?
Parent root = FXMLLoader.load(getClass().getResource("newPage.fxml"));
Stage.setScene(new Scene(root));
Stage.show();
Я нашел другой способ, который заключается в простом изменении корневого каталога текущей сцены (то есть, по сути, замените файл FXML сцены на новый). Кажется, что это немного быстрее и с меньшими задержками, но хороший ли это способ делать что-то?
Parent root = FXMLLoader.load(getClass().getResource("newPage.fxml"));
Stage.getScene().setRoot(root);
Stage.show();
Каков наилучший способ переключения между страницами (сценами)?
Комментарии:
1. Оба работают нормально, если нет ошибок. Лучшего не существует. Используйте тот, который лучше всего подходит для вашей ситуации.
Ответ №1:
Принимая во внимание ваши собственные требования «Размер экрана должен оставаться неизменным, все в окне должно оставаться неизменным, кроме содержимого», тогда второй метод кажется естественным, не так ли? Поскольку это также немного быстрее и работает в соответствии с вашими собственными выводами, я бы не стал дважды думать о выборе.
Комментарии:
1. Принято к сведению. Спасибо!