2012-12-30 216 views
3

我在桌面應用程序中使用JavaFX 2.2,並且實現了WebView組件。從桌面應用程序中我加載了www.google.com。問題是我希望在加載頁面之前顯示一個.gif圖像。現在,它顯示一個白色屏幕,然後顯示頁面。 有沒有辦法做到這一點?提前致謝。在JavaFX WebView加載頁面之前顯示加載圖像

回答

5

您可以收聽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://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(); 
相關問題