Java,帮助进行线程/摆动

时间:2011-09-11 03:37:02

标签: java

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的颜色 - 它可以正常工作。

正在发生的是打印语句运行,并且在它们全部运行之后它会生成一行白色JPanel,而不是将它们设置为红色,然后将它们设置为白色。有什么线索错了吗?

1 个答案:

答案 0 :(得分:1)

我猜你正在EDT上执行你的代码,而sleep()方法阻止了GUI的重新绘制。

阅读Concurrency in Swing以获取更多信息和解决方案。