我试图在JavaFX中创建一个简单的加载窗口,并且我正在使用信息警报。 这是我的代码:
public Alert alert = new Alert(Alert.AlertType.INFORMATION);
public void drawData(javafx.event.ActionEvent actionEvent) {
alert.setHeaderText(null);
alert.setTitle("Loading...");
alert.show();
for (int i = 0; i < * something * ; i++) {
/* some code here */
System.out.println(i);
alert.setContentText(Integer.toString(i));
}
alert.close();
}
}
我真的有办法解决这个问题吗? 另外,如何忽略提醒的确定按钮?
答案 0 :(得分:0)
问题是您在用户界面线程上完成工作:
for (int i =0; i < *something*; i++){
*some code here*
System.out.println(i);
alert.setContentText(Integer.toString(i));
}
这会阻止用户界面和任何更新。在JavaFX中,每个&#39; tick&#39;都会进行更新。用户界面调度程序。如果更新用户界面项的属性,则在UI线程进入下一个刻度之前,它们将不会被处理。
要完成工作,您需要将其移出用户界面线程并使用update it机制。查看JavaFX concurrency以获取有关Worker
和其他并发类的更多信息,这将使您无法解决问题。