Webview 进度指示器未显示

Webview 进度指示器未显示,webview,javafx-2,Webview,Javafx 2,我在JavaFXWebView中添加了一个进度指示器。默认情况下,这会将google页面作为加载页面。谷歌主页加载前的进度指示器工作正常。但我希望在我访问谷歌搜索结果中的其他链接时,进度指示器能够工作或显示出来。我在控制器类代码中的指示符只适用于google主页。请查找下面的代码片段以供参考。提前感谢 public class GoogleController implements Initializable { @FXML SplitPane sp; @FXML Label welcomeM

我在JavaFXWebView中添加了一个进度指示器。默认情况下,这会将google页面作为加载页面。谷歌主页加载前的进度指示器工作正常。但我希望在我访问谷歌搜索结果中的其他链接时,进度指示器能够工作或显示出来。我在控制器类代码中的指示符只适用于google主页。请查找下面的代码片段以供参考。提前感谢

public class GoogleController implements Initializable {

@FXML
SplitPane sp;
@FXML
Label welcomeMsg1;
@FXML
Label welcomeMsg2;

@FXML
WebView webview;
@FXML
Label uname;
@FXML
Label status1;
@FXML
ProgressIndicator pi;
String url=null;
/**
 * Initializes the controller class.
 */

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO

    WebEngine webengine=webview.getEngine();
    WebEngine webengine1=webview.getEngine();
    webengine.load("http://www.google.com");
    pi.progressProperty().bind(webengine.getLoadWorker().progressProperty());
    webengine.getLoadWorker().stateProperty().addListener(
    new ChangeListener<State>() {
        public void changed(ObservableValue ov, State oldState, State newState) {
            if (newState == State.SUCCEEDED) {

                pi.setVisible(false);
                status1.setText("");

            } else {
            }
        }
    });
公共类GoogleController实现可初始化{
@FXML
裂窗格玻璃;
@FXML
标签welcomeMsg1;
@FXML
标签welcomeMsg2;
@FXML
网络视图;
@FXML
标记uname;
@FXML
标签状态1;
@FXML
进度指标pi;
字符串url=null;
/**
*初始化控制器类。
*/
@凌驾
公共void初始化(URL、ResourceBundle rb){
//待办事项
WebEngine WebEngine=webview.getEngine();
WebEngine webengine1=webview.getEngine();
webengine.load(“http://www.google.com");
pi.progressProperty().bind(webengine.getLoadWorker().progressProperty());
webengine.getLoadWorker().stateProperty().addListener(
新的ChangeListener(){
公共无效已更改(ObservalEvalue ov、State oldState、State newState){
if(newState==State.successed){
pi.setVisible(假);
status1.setText(“”);
}否则{
}
}
});

您正在将进度指示器设置为不可见,并且不再使其可见

与其在load worker状态更改侦听器中调用setVisible(false),不如将进度指示器的可见性与其进度量绑定(直接在绑定progressProperty之后)

这样,progress属性将仅在加载过程中显示,然后在加载页面时将切换为不可见,然后在下一个页面加载过程中切换回可见,等等(从您的问题来看,这就是您想要完成的)


我确实发现,让进度指示器在可见性中弹出或弹出有点烦人,因此您可能希望重新考虑您的设计,并使进度条始终保持不变(或者至少使其样式不引人注目,或者为其执行淡入淡出动画).

谢谢@jewelsea,这样它就可以工作了。但我还想显示“页面正在加载”之类的文本当它被加载并在完成后淡出时。@Himanshu,JavaFX可以通过使用标签和应用来完成这类事情,但是它们实际上与原始问题不同,所以请尝试自己实现它们,并在需要时创建新问题(而不是注释)。另一种“自动”显示/隐藏进度条的方法加载url时正在执行以下绑定:
pi.visibleProperty().bind(webengine.getLoadWorker().runningProperty());
@jewelsea,我当然会……Thanks!
pi.visibleProperty().bind(pi.progressProperty().lessThan(1));