1
我在执行后台任务时让JavaFX UI保持活动状态时出现问题。 我已经建立了这个非常简单的代码 -JavaFX UI在执行新线程任务时冻结
@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();
}
我希望发生是有进度条更新每隔约1秒,直到任务完成。相反,UI完全冻结10秒,之后进度条显示完成。 只是为了说清楚 - 问题不仅在于所有更新最终都会一次出现,而且在此之前UI完全没有响应。
我已阅读了有关此主题的任何其他问题,但无法找到答案。我究竟做错了什么?
谢谢。
'的run()' - >'开始()'。您只需在当前线程中将'Thread'实例作为'Runnable'运行。 – 2014-10-27 15:14:48
是的,正如@MarkoTopolnik所写,你并没有在一个新的'Thread'中执行'Task'。试试'new Thread(t).start();' – icza 2014-10-27 15:16:34
谢谢!现在我觉得很愚蠢。 'run'和'start'之间的区别可以更清楚,但是... – Itai 2014-10-27 15:16:55