gpt4 book ai didi

迭代器停止后,Java 不会更改接口(interface)上的值

转载 作者:行者123 更新时间:2023-12-01 14:10:56 25 4
gpt4 key购买 nike

我对此有疑问。

我正在做一个简单的游戏,用 JDialog 查找一个数字。当我按下“开始”按钮时,数字必须改变它,但迭代器停止后数字不会改变。

boolean found = False;
Random random = new Random();


for (int i = 0; i < 10 && !found; i++) {
try {
Thread.sleep(100);
int n = random.nextInt(10)+1;
lblNewLabel_1.setText(String.valueOf(n));

if(n == numeroLoteria){
found = true;
System.out.println("Encontrado numero "+n+"!");
}
System.out.println("Iteracion "+i+"\nnumero: "+n);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

必须更改的标签是 lblNewLabel_1。

我想在每次迭代中更改它。

最佳答案

看看Concurency In Swing来自 Oracle 的教程。

几个关键点

  1. 不建议从 EDT 之外的任何线程访问 javax.swing.* 中的类。
  2. 使用 javax.swing.SwingWorker (Java 1.3 及更高版本)或 java.awt.SecondaryLoop (Java 7 及更高版本)适用于需要更新 UI 或与 UI 交互的长时间运行的任务。 javax.swing.Timer可用于在将来触发事件,但通常不应用于任何长时间运行的任务。

编辑 正如评论中提到的,您不应阻止 EDT。

关于迭代器停止后,Java 不会更改接口(interface)上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com