[英]Java, help with threading/swing
import java.awt.Color;
public class bullet {
public bullet(int x, int y, boolean up)
{
System.out.println("Called");
int start = up?15-y:Math.abs(y-15);
int cNt = 0;
System.out.println("Start - " + start);
for(int i=start;15>start;start++)
{
try {
System.out.println("Its red");
engineMenu.staticSGC(x,cNt,Color.RED);
Thread.sleep(300);
} catch (InterruptedException e) {}
System.out.println("White - " + i + "," + cNt);
engineMenu.staticSGC(x,cNt,Color.WHITE);
cNt += 1;
}
}
}
engineMenu.staticSGC所做的全部工作就是更改JPanel的颜色-效果很好。
发生的事情是运行print语句,并且在它们全部运行之后,它会生成一行白色的JPanels,而不是在应有的情况下将它们设置为红色,然后再设置为White。 任何线索出什么事了吗?
我猜想您正在EDT上执行代码,而sleep()方法阻止了GUI重新绘制自身。
阅读Swing中的并发以获取更多信息和解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.