JavaFx ProgressIndicator во время загрузки панели (GUI)
В моем приложении мне приходится создавать большие панели с большим количеством контента. Я покажу ProgressIndicator во время загрузки графического интерфейса.
В моем первом тесте я покажу ProgressIndicator, в то время как я добавляю много вкладок в TabPane.
Это мой тестовый код:
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();
}
}
Но приложение покажет окно, если задание выполнено. Если я заменим строки внутри цикла сThread.sleep(10)
приложение показывает индикатор и, в конце концов, спит, оно показывает графический интерфейс.
Как я могу показать индикатор, пока графический интерфейс еще не загружен?