在JavaFXWebView加载页面之前显示加载图像

在JavaFXWebView加载页面之前显示加载图像,java,javafx-2,Java,Javafx 2,我在桌面应用程序中使用JavaFX2.2,并实现了WebView组件。从桌面应用程序中,我加载了www.google.com。问题是我希望在加载页面之前显示.gif图像。现在,它显示一个白色屏幕,然后显示页面。 有没有办法做到这一点?提前感谢。您可以收听WebEngine\loadWorker.stateProperty并在WebView上方显示动画gif,直到加载就绪 更好的是,IMHO,听一下WebEngine#loadWorker.progressProperty,向用户展示真实的加载进度

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

您可以收听
WebEngine\loadWorker.stateProperty
并在
WebView
上方显示动画gif,直到加载就绪

更好的是,IMHO,听一下
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://stackoverflow.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();
StackPane root=new StackPane();
最终进度条进度=新进度条();//或者您可以将ImageView与动画gif一起使用
WebView WebView=新建WebView();
root.getChildren().addAll(webView,progress);
final WebEngine=webView.getEngine();
发动机负荷(“http://stackoverflow.com/questions/14094264/display-loading-image-before-javafx-webview-loads-the-page");
//使用绑定更新进度条
progress.progressProperty().bind(engine.getLoadWorker().progressProperty());
engine.getLoadWorker().stateProperty().addListener(
新的ChangeListener(){
@凌驾
公共无效已更改(ObservalEvalue ov、State oldState、State newState){
if(newState==State.successed){
//隐藏进度条,然后页面准备就绪
进度。setVisible(false);
}
}
});
场景=新场景(根,500500);
初级阶段。场景(场景);
primaryStage.show();