JavaFx ProgressIndicator ao carregar o painel (GUI)
No meu aplicativo, tenho que criar painéis grandes com muito conteúdo. Vou mostrar um ProgressIndicator enquanto a GUI está carregando.
Meu primeiro teste, mostrarei um ProgressIndicator enquanto adiciono muitas guias a um TabPane.
Esse é o meu código de teste:
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();
}
}
Mas o aplicativo mostrará a janela se a tarefa terminar. Se eu substituir as linhas dentro do loop for porThread.sleep(10)
o aplicativo mostra o indicador e, afinal, dorme, mostra a GUI.
Como posso mostrar um indicador enquanto a GUI ainda não está carregada?