【问题标题】:Display loading image before JavaFX WebView loads the page在 JavaFX WebView 加载页面之前显示加载图像
【发布时间】:2012-12-30 20:14:44
【问题描述】:

我在桌面应用程序中使用 JavaFX 2.2,并且已经实现了 WebView 组件。我从桌面应用程序加载了 www.google.com。问题是我希望在页面加载之前显示一个 .gif 图像。现在,它显示一个白屏,然后显示页面。 有没有办法做到这一点?提前致谢。

【问题讨论】:

    标签: java javafx-2


    【解决方案1】:

    您可以收听WebEngine#loadWorker.stateProperty 并在WebView 上方显示动画 gif,直到加载完成。

    更好的是,恕我直言,听WebEngine#loadWorker.progressProperty 并向用户显示真实的加载进度。

        StackPane root = new StackPane();
        final ProgressBar progress = new ProgressBar(); // or you can use ImageView with animated gif instead
    
        WebView webView = new WebView();
        root.getChildren().addAll(webView, progress);
        final WebEngine engine = webView.getEngine();
        engine.load("http://*.com/questions/14094264/display-loading-image-before-javafx-webview-loads-the-page");
    
        // updating progress bar using binding
        progress.progressProperty().bind(engine.getLoadWorker().progressProperty());
    
        engine.getLoadWorker().stateProperty().addListener(
                new ChangeListener<State>() {
                    @Override
                    public void changed(ObservableValue ov, State oldState, State newState) {
                        if (newState == State.SUCCEEDED) {
                             // hide progress bar then page is ready
                             progress.setVisible(false);
                        }
                    }
                });
    
    
        Scene scene = new Scene(root, 500, 500);
        primaryStage.setScene(scene);
        primaryStage.show();
    

    【讨论】:

    • 加载大 html 进度不显示,有什么解决方法吗?