0
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-的顏色,它工作正常。的Java,幫助線程/擺動
正在發生的事情是打印語句運行,並且在它們全部運行之後,它會生成一行白色JPanel,而不是在它們應該設置爲紅色和白色時設置它們。任何線索什麼是錯的?
是的,您在稱爲事件調度線程或EDT的主Swing線程上調用此代碼,並且您的Thread.sleep(...)通過捆綁其主線程使GUI進入休眠狀態。在[SwingWorker](http://download.oracle.com/javase/tutorial/uiswing/concurrency/index.html)提供的後臺線程中執行此操作,或使用Swing Timer。 –