#javafx #tornadofx
#javafx #tornadofx
Вопрос:
Мой код загружает соединения асинхронно:
runAsync {
controller.loadConnections(viewModel)
} ui {
table.items = it
table.refresh()
}
и внутренний loadConnections
метод:
//read connections from file and then
Platform.runLater(() -> {
CollectionsKt.bind(connections, databases, ConnectionsModel::new);
connections.forEach(connection -> connection.setOwner(viewModel));
});
Когда я хочу добавить индикатор выполнения как:
private val status = TaskStatus()
runAsync(status) {
controller.loadConnections(viewModel)
} ui {
table.items = it
table.refresh()
}
Но это блокирует индикатор прогресса. Как я понимаю , 2 задачи ( progress
и Platform.runLater
) не выполняются внутри async
. Но как мне заставить это работать?
Комментарии:
1. не имеет прямого отношения (и не слишком хорошо знаком с tornadofx, просто предполагая, что table.refresh такой же, как в обычном javafx): не используйте его — кажущаяся необходимость может указывать на неправильное подключение данных / представления
Ответ №1:
Попробуйте этот код:
CompletableFuture.runAsync(() -> {
for (int n = 1; n > size; n )
progressBar.setProgress(n);
});