Estou construindo um sisteminha em javafx, mas acredito que a duvida se aplica a outras plataformas. E preciso que ao carregar um loop de inserir registro um a um no banco de dados de um updateProgress por registro. Segue um exemplo para facilitar
public class Progress3 extends Application {
@Override
public void start(Stage primaryStage) {
ProgressBar barra = new ProgressBar();
Label status = new Label("Novo");
Service<Void> servico = new Service() {
@Override
protected Task createTask() {
return new Task() {
@Override
protected Void call() throws Exception {
//Task tem duas property interessantes para usar junto a um ProgressBar
//a messageProperty, que pode ser ligada a outra StringProperty
//para transmitir uma mensagem,
//e a progressProperty, que serve para mandar valores númericos a uma
//ProgressBar ou ProgressIndicator
updateMessage("Carregando...");
Thread.sleep(300);
updateProgress(1, 10);
for (int i = 0; i < 10; i++) {
// não consigo dar this.insertRegistro aqui
updateProgress(i + 1, 10);
updateMessage("Carregando " + (i + 1) + " de 10");
Thread.sleep(300);
}
updateMessage("Terminou");
return null;
}
};
}
};
//fazendo o bind (ligando) nas proprety
status.textProperty().bind(servico.messageProperty());
barra.progressProperty().bind(servico.progressProperty());
//precisa inicializar o Service
servico.restart();
//criando um ui para exemplificar o uso do ProgressBar
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(status, barra);
Scene scene = new Scene(root, 150, 50);
primaryStage.setTitle("Progress Bar!");
primaryStage.initStyle(StageStyle.UTILITY);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}