添加一个 ChangeListener 以在加载 Web 引擎时隐藏进度指示器
Adding a ChangeListener to hide progress indictor when the WebEngine has loaded
我正在尝试使用 JavaFX 在等待视频加载时显示进度指示器。
我已经能够通过阅读其他帖子拼凑出以下代码。
但是我不确定为什么进度指示器没有显示?视频加载需要 3-4 秒,而视频加载时我看到的只是白框。
我导入了这两个库。
导入javafx.beans.value.ChangeListener
进口javafx.beans.value.ObservableValue
如有任何帮助,我们将不胜感激。
HBox videoBox = new HBox();
centerGridMain.add(videoBox, 6, 2);
videoBox.setEffect(new DropShadow());
ProgressIndicator pi = new ProgressIndicator();
WebEngine webEngine = new WebEngine();
WebView webView = new WebView();
webEngine=webView.getEngine();
webEngine.load("https://www.youtube.com/embed/ER8-WJxoItE");
videoBox.getChildren().addAll(webView, pi);
pi.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
// TODO Auto-generated method stub
if (newState == State.SUCCEEDED) {
pi.setVisible(false);
}
else {
pi.setVisible(true);
}
}
});
我最终这样做了并且得到了预期的结果。
HBox videoBox = new HBox();
centerGridMain.add(videoBox, 6, 2);
videoBox.setEffect(new DropShadow());
ProgressIndicator pi = new ProgressIndicator();
WebEngine webEngine = new WebEngine();
WebView webView = new WebView();
webEngine=webView.getEngine();
webEngine.load("https://www.youtube.com/embed/ER8-WJxoItE");
videoBox.getChildren().addAll(pi);
pi.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
// TODO Auto-generated method stub
if (newState == State.SUCCEEDED) {
videoBox.getChildren().addAll(webView);;
}
else {
pi.setVisible(true);
}
}
});
我正在尝试使用 JavaFX 在等待视频加载时显示进度指示器。
我已经能够通过阅读其他帖子拼凑出以下代码。
但是我不确定为什么进度指示器没有显示?视频加载需要 3-4 秒,而视频加载时我看到的只是白框。
我导入了这两个库。
导入javafx.beans.value.ChangeListener
进口javafx.beans.value.ObservableValue
如有任何帮助,我们将不胜感激。
HBox videoBox = new HBox();
centerGridMain.add(videoBox, 6, 2);
videoBox.setEffect(new DropShadow());
ProgressIndicator pi = new ProgressIndicator();
WebEngine webEngine = new WebEngine();
WebView webView = new WebView();
webEngine=webView.getEngine();
webEngine.load("https://www.youtube.com/embed/ER8-WJxoItE");
videoBox.getChildren().addAll(webView, pi);
pi.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
// TODO Auto-generated method stub
if (newState == State.SUCCEEDED) {
pi.setVisible(false);
}
else {
pi.setVisible(true);
}
}
});
我最终这样做了并且得到了预期的结果。
HBox videoBox = new HBox();
centerGridMain.add(videoBox, 6, 2);
videoBox.setEffect(new DropShadow());
ProgressIndicator pi = new ProgressIndicator();
WebEngine webEngine = new WebEngine();
WebView webView = new WebView();
webEngine=webView.getEngine();
webEngine.load("https://www.youtube.com/embed/ER8-WJxoItE");
videoBox.getChildren().addAll(pi);
pi.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
// TODO Auto-generated method stub
if (newState == State.SUCCEEDED) {
videoBox.getChildren().addAll(webView);;
}
else {
pi.setVisible(true);
}
}
});