JavaFx ProgressIndicator beim Laden des Fensters (GUI)
In meiner Anwendung muss ich große Fenster mit viel Inhalt erstellen. Ich zeige einen ProgressIndicator, während die GUI geladen wird.
ei meinem ersten Test zeige ich einen ProgressIndicator, während ich viele Tabs zu einem TabPane hinzufüg
Das ist mein Testcode:
public class SampleController implements Initializable {
private TabPane tabPane;
@FXML
private BorderPane borderPane;
ProgressIndicator myProgressIndicator;
Task<Void> myLongTask;
@Override
public void initialize(URL location, ResourceBundle resources)
{
myProgressIndicator = new ProgressIndicator();
Pane p1 = new Pane(myProgressIndicator);
tabPane = new TabPane();
Pane p2 = new Pane(tabPane);
myLongTask = new Task<Void>()
{
@Override
protected Void call() throws Exception
{
for (int i = 1; i < 1000; i++)
{
// Thread.sleep(10);
Tab newTab = new Tab("Number:" + i);
tabPane.getTabs().add(newTab);
}
return null;
}
};
borderPane.centerProperty().bind(Bindings.when(myLongTask.runningProperty()).then(p1).otherwise(p2));
new Thread(myLongTask).start();
}
}
Aber die Anwendung zeigt das Fenster an, wenn die Aufgabe beendet ist. Wenn ich die Zeilen in der for-Schleife durch @ ersetThread.sleep(10)
Die Anwendung zeigt den Indikator an, und im Ruhezustand zeigt sie schließlich die grafische Benutzeroberfläche an.
Wie kann ich einen Indikator anzeigen, während die GUI noch nicht geladen ist?