java - 变量在打印出来之前不会更新?

标签 java swing jframe

我创建了一个无限 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/

相关文章:

java - 我如何从 json 恢复对象映射?

java - JFrame单例

java - JFrame 上的计数器

java - 使用 JPA 进行数据库设计

java - 如何减小我的 java/gradle docker 镜像大小?

java - Scala-Java 互操作,方法重载问题(数组和可变参数)

java - 在 JAR 中强制系统属性

java - java swing中的定位

java - JTable 单元格 - 处理长文本

java - 最小化和最大化 java swing 时的帧大小问题