java - Java GUI 在 Thread.sleep 后未启动
问题描述
我试图在满足某个条件时弹出一个窗口,但在满足条件时。窗口没有打开。我正在使用 Thread.sleep
代码:
public void grow() {
Thread thread = new Thread(() -> {
try {
Thread.sleep(this.harvestTime);
if(water >= waterNeeded && fertelizer >= fertelizerNeeded) {
this.harvest = true;
AlertBox.display("CROP ALERT","A SEED HAS FINISHED GROWING");
Thread.sleep(60000);
if(harvest == true) {
withered = true;
harvest = false;
AlertBox.display("ALERT", "FAILED TO HARVEST A CROP. IT BECAME WITHERED!");
}
}
else {
this.withered = true;
}
} catch (Exception e) {
}
});
thread.start();
}
解决方案
Java FX 方法仅适用于 Java FX 线程。您不能也不应该使用后台线程中的 Java FX 组件/方法。
如果您需要显示来自后台线程的通知,请使用:
Platform.runLater(new Runnable() {
@Override public void run() {
bar.setProgress(counter / 1000000.0);
}
});
在这种情况下Runnable
,将被添加到 Java FX 事件队列中,并在 Java FX 线程中进行处理。
推荐阅读
- math - 以 RHS 作为函数定义的 Idris 证明
- javascript - 如何根据多个嵌套条件过滤对象?
- pandas - 如何计算每月对数回报
- openedge - 如何在 ChUI 编辑器小部件中更改文本的外观
- windows - 从文件中删除与模式匹配的所有行,除了第一次出现
- python - 有没有办法在不使用绝对路径的情况下在两个不同的项目中共享文件?
- c++ - 如何在 C++ 中从十六进制切换到 2^16 系统
- c# - 在c#中使用表达式体语法的以下方式有区别吗?
- sql-server - 将具有不同 WHERE 子句的多个 SELECT 语句的结果组合到一个查询中
- angular - 如何修复:“数学”类型上不存在属性“种子随机”