加载FXML文件时显示进度

时间:2016-06-02 05:42:56

标签: javafx javafx-8

JavaFX应用程序有一个树状菜单,单击一个菜单项会加载一个fxml文件 image attached

有些FXML是嵌套的,加载时间最长需要2-3秒。我想在FXML加载和初始化时显示进度指示器。控制器的初始化代码可以作为任务执行,并将其进度绑定到进度条控件,但问题是需要使用Platform.runLater()在FX Application线程中执行某些代码。如果我这样做,就无法知道初始化何时完成。

有没有办法处理这个看似简单的任务?

我无法共享需要很长时间才能加载的控制器代码,但是出于这个问题的目的,请假设以下初始化代码是罪魁祸首。我无法在Task线程中执行此代码块,因为无法从JavaFX Application线程以外的线程进行UI更改。如果我在Platform.runLater()中包含更改UI的代码部分,则任务可能在UI更改完成之前完成它的执行。

public void initialize(URL url, ResourceBundle rb) {
    if (webEngine == null) {
        webEngine = helpView.getEngine();
    }
    try {
        Path filepath = Paths.get("docs/index.html");
        webEngine.load(filepath.toUri().toString());

    } catch (Exception ex) {
        Alert alert = new Alert(Alert.AlertType.WARNING, "Failed to read doc files", ButtonType.OK);
        alert.show();
    }
}

拉​​吉

0 个答案:

没有答案