我创建了一个无限 while 循环来检查 boolean 值是否发生过更改(我在 JFrame 中有一个按钮可以使 false boolean 值变为 true)。然而,即使我检查每个刻度,它也只有在打印出变量时才有效。
我很确定程序不会更新变量,除非我打印它。有人有什么建议吗?
代码:
while (100 == 100) {
System.out.println(panelVar.getGen() == false);
boolean make = panelVar.getGen();
//System.out.println(make);
if (make != false) {
System.out.println(sentenceMaker(minLength, wordAmt, sourceTxt));
//panelVar.setGen(false);
}
}
}
最佳答案
GUI 永远不应该在主线程上运行无限循环。这会使它们锁定,并且不会响应,这可能解释了为什么您的变量没有显示。
您应该使用诸如 ActionListener
之类的回调来通知外部小部件发生的更改。您还可以使用AtomicBoolean
进行多线程访问
否则,您会看到竞争条件,并且应该在单独的线程
中运行该循环
关于java - 变量在打印出来之前不会更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62223684/