0
這是我的應用程序的主窗口:JavaFX的節目progressindicator同時加載
我希望能夠以更新的窗口,所以我寫了一個方法reset
其中IST按F5鍵觸發:
public void reset() {
final ProgressIndicator pi = new ProgressIndicator(-1.0f);
final HBox hb = new HBox(pi);
final VBox vb = new VBox(hb);
hb.setAlignment(Pos.CENTER);
vb.setAlignment(Pos.CENTER);
scene.setRoot(vb);
//this.show();
}
如果我運行這個看上去某事像這樣:
但是,如果我取消對該行//this.show();
這將被執行:
public void show() {
final VBox box = API_CALL_AND_BUILDING_BOX_MAGIC_WHICH_I_STRIPPED;
gp.getChildren().clear();
gp.getChildren().add(box);
scene.setRoot(gp);
stage.sizeToScene();
}
,我將永遠無法看到我的ProgressIndicator,因爲該應用程序將只是掛,直到APIcall結束,新內容加載。
我嘗試了一些線程和Platform.runLater(),但我不能讓它工作。我的目標是顯示ProgressIndicator,直到API調用完成,框架已經建立,場景獲得gp
作爲新根。
我希望它有點難以理解我的目標,我的問題是:)
FFS如何在評論中創建新行? :D – daputzy
Ahh其shift + enter ... 所以我想說的是: 我已經得到它的工作,即使在一個更基本的水平,那麼你建議。 你很明顯是在我之上的某個層面上操作;) 但是我現在試着按照你的建議來實現它! – daputzy
請注意,由於這是一個JavaFX問題,JavaFX API定義了一個特定的['Task'](http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html)這個目的;它提供了一個'updateProgress'方法和其他回調方法來與UI線程交互。 –