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、スレッド/スイングのヘルプ
何が起こっているのかは、実行された印刷ステートメントが実行された後に、それらが実行された後で、白いJPanelsを赤に設定するのではなく白に設定します。どんな手掛かりが間違っていますか?
はい、イベントスキャッチスレッドまたはEDTと呼ばれるメインのSwingスレッドでこのコードを呼び出しています。あなたのThread.sleep(...)はメインスレッドを縛ることによってGUIをスリープ状態にしています。これを[SwingWorker](http://download.oracle.com/javase/tutorial/uiswing/concurrency/index.html)が提供するようなバックグラウンドスレッドで行うか、Swing Timerを使用します。 –