我正在尝试在 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();
}
}
真的有办法解决这个问题吗? 另外,如何忽略警报的“确定”按钮?
最佳答案
问题是您在用户界面线程上完成工作:
for (int i =0; i < *something*; i++){
*some code here*
System.out.println(i);
alert.setContentText(Integer.toString(i));
}
这会阻止用户界面和任何更新。在 JavaFX 中,更新是在用户界面调度程序的每个“刻度”上完成的。如果您更新用户界面项的属性,则在 UI 线程获得下一个刻度之前它们不会得到处理。
要完成工作,您需要将其移至用户界面线程之外,并使用一种机制 update it 。查看JavaFX concurrency有关 Worker
和其他并发类的更多信息,这将为您解决一些麻烦。
关于java - 如何动态更改警报文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49551946/