I have a problem getting the JavaFX UI to keep active while performing a background Task.
I have set up this very simple code -
@FXML
ProgressBar prgbProgress;
@FXML
private void onClick(ActionEvent event) {
Task <Void> t = new Task <Void> () {
@Override
protected Void call() throws Exception {
for (int i = 0; i < 10; i++) {
updateProgress(i, 9);
Thread.sleep(1000);
}
return null;
}
};
prgbProgress.progressProperty().bind(t.progressProperty());
new Thread(t).run();
}
What I expect to happen is to have the progress bar update every ~1 second until the task is complete. Instead, the UI completely freezes for 10 seconds, after which the progress bar appears completed.
Just to make it clear - the problem isn't only that all of the updates appear at once in the end, but also that the UI is completely unresponsive until then.
I have read just about any other question about this topic, but can't find an answer. What am I doing wrong?
Thanks.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…