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();
Другие вопросы по тегам