Доброго времени суток
проблема в следующем
пытаюсь прикрутить своему небольшому приложению прогресс бар
в классе контроллере при клике на кнопку выполняется следующий код
public void calculate() {
button.setDisable(true);
new Thread(this::calculationStart).start();
button.setDisable(false);
}
new Thread(this::calculationStart).start();
тут в отдельном потоке вызывается следующий метод
protected void calculationStart() {
double progress = 0.0;
String s1 = steamIdTextArea.getText();
int accountId = Integer.parseInt(s1);
MatchHistory history = null;
try {
try {
history = api.getMatchHistory(MATCHES_AMOUNT, accountId);
} catch (IOException e) {
resultText.setText(e.getMessage());
}
} catch (RuntimeException e) {
System.out.println(e.getMessage());
System.out.println("Task can't be completed");
throw new RuntimeException("Closing ...");
}
List<Long> matchesList = calc.matchIdList(history);
ArrayList<MatchDetails> matchDetailses = new ArrayList<>();
for (Long matchId : matchesList) {
try {
progress += 0.05;
matchDetailses.add(api.getMatchDetails(matchId));
final double finalProgress = progress;
Platform.runLater(() -> progressBar.setProgress(finalProgress));
} catch (IOException e) {
progress += 0.05;
final double finalProgress = progress;
resultText.setText(e.getMessage());
Platform.runLater(() -> progressBar.setProgress(finalProgress));
}
}
List<int[]> scoreList = calc.playerScore(matchDetailses, accountId);
double averageKDA = calc.averageKda(scoreList);
resultText.setText("Average KDA for last " + MATCHES_AMOUNT + " rating games = " + averageKDA);
}
в код вникать я думаю не совсем обязательно, проблема в последней строчке этого метода
в ней я пытаюсь обновить текст из главного потока, но это само собой реализовать не получается, отсюда вопрос, как же мне после выполнения этого метода, обновить текст в UI из главного потока ?