如何在FXML场景之上添加JavaFX Preloader ProgressBar

时间:2015-11-13 11:56:26

标签: java javafx scenebuilder

我是Java和JavaFX的新手,所以如果我在这里提出错误的问题,请耐心等待。

我正在尝试将preloader Scene添加到我构建的应用程序中:我可以使用下面的代码添加预加载器。它是默认的预加载器,看起来非常基本。所以,这是我的问题。 1)如何添加百分比进度状态而不是进度条。 2)是否可以在FXML场景之上加载此进度条

Preloader

public class JavaFXPreloader3 extends Preloader {

    ProgressBar bar;
    Stage stage;

private Scene createPreloaderScene() throws IOException {

    Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));

    ProgressIndicator pi = new ProgressIndicator();
    BorderPane p = new BorderPane();
    p.setCenter(pi);
    return new Scene(p, 300, 150);

}

    @Override
    public void start(Stage stage) throws Exception {
        this.stage = stage;
        stage.setScene(createPreloaderScene());        
        stage.show();
    }

    @Override
    public void handleStateChangeNotification(StateChangeNotification scn) {
        if (scn.getType() == StateChangeNotification.Type.BEFORE_START) {
            stage.hide();
        }
    }

    @Override
    public void handleProgressNotification(ProgressNotification pn) {
        bar.setProgress(pn.getProgress());
    }    

}

如何返回根场景而不是包含进度指示器的BorderPane p:

 ProgressIndicator pi = new ProgressIndicator();
    BorderPane p = new BorderPane();
    p.setCenter(pi);
    return new Scene(p, 300, 150);

1 个答案:

答案 0 :(得分:0)

这是一个用于创建PreLoader的优秀教程。

https://docs.oracle.com/javafx/2/deployment/preloaders.htm