JavaFX Stage показывает пустую сцену
Я пытался открыть новое окно для отображения индикатора выполнения из контроллера:
Stage fenetre = new Stage();
fenetre.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader;
Parent root;
Scene chargementBox;
loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/views/Chargement.fxml"));
loader.load();
root = loader.getRoot();
chargementBox = new Scene(root);
fenetre.setTitle("Chargement");
fenetre.resizableProperty().set(false);
fenetre.setScene(chargementBox);
fenetre.show();
Это показывает окно. Но это пусто:
Это то, что он должен показать
Я перепробовал все, я использовал другие файлы FXML, размеры окон правильные, но всегда пустые. Тот же код работает на других контроллерах, но не здесь.
Помогите, пожалуйста. Нет исключений и ошибок. Спасибо
Редактировать: я нашел причину, почему он не отображается, потому что позже в коде у меня есть эта функция: Transport.send(message);
это блокирует программу от обновления моей сцены и отображения элементов. Есть ли способ, которым я могу запустить эту строку в фоновом режиме или в другом потоке (я никогда раньше не использовал потоки.) Еще раз спасибо за помощь.
1 ответ
Чтобы запустить что-либо в фоновом потоке, вам нужно либо использовать задачу (можно использовать один раз), либо службу (использовать повторно).
Вот как вы можете использовать сервис:
Service<Void> service = new Service<Void>(){
@Override
protected Task<Void> createTask() {
return new Task<Void>() {
@Override
protected Void call() throws Exception {
//do your logic here.
return null;
}
};
}
};
service.setOnSucceeded(event -> {
//do some processing when complete
});
service.setOnFailed(event -> {
//do some processing when it failes
});
service.start();