JavaFX Stage显示空场景

时间:2015-12-29 20:05:36

标签: java javafx scene 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();

显示窗口。但它是空的:

This is what it should show

This is what i got instead

我尝试了一切,我使用了其他FXML文件,窗口大小正确,但它总是空的。相同的代码适用于其他控制器,但不适用于此。

请帮助。没有例外也没有错误。感谢的

编辑:我找到了它没有显示的原因,这是因为在代码的后面我有这个函数:Transport.send(message);阻止程序刷新我的场景并显示元素。有没有办法可以在后台或另一个线程中运行该行(之前我从未使用过线程。)再次感谢您的帮助。

1 个答案:

答案 0 :(得分: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();