进度指示器未显示

时间:2013-09-20 15:07:02

标签: webview javafx-2

我在javaFX webview中添加了一个进度指示器。这默认情况下将谷歌页面作为加载页面。进度指示器直到加载谷歌主页工作正常。但是,当我访问谷歌搜索结果中的其他链接时,我希望进度指示器正常工作或显示。我在控制器类代码中的指示符仅适用于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 {
            }
        }
    });

1 个答案:

答案 0 :(得分:2)

您正在将进度指示器设置为不可见,并且永远不会再次显示。

而不是在加载工作器状态更改侦听器中调用setVisible(false),而是将进度指示器的可见性绑定到其进度量(直接在绑定progressProperty之后)。

pi.visibleProperty().bind(pi.progressProperty().lessThan(1));

这样,progress属性只会在加载过程中显示,然后在页面加载时切换为不可见,然后在下一页加载过程中切换回可见等等(来自你的)问题在我看来是你想要完成的事情。

我确实发现进度指示器弹出可见性有点烦人,所以你可能想要重新考虑你的设计并使进度条保持持久(或至少使它的造型不引人注目或表现淡入和为它淡出动画。)