线程睡眠后的Java小程序重新绘制

线程睡眠后的Java小程序重新绘制,java,applet,awt,mouseclick-event,Java,Applet,Awt,Mouseclick Event,我有一个相当简单的小程序,我正在尝试制作-一旦点击鼠标,我们就用一个新的字符串重新绘制。这本质上是一个倒计时(3,2,1…退出)。但是,在睡眠循环结束之前,小程序似乎不想重新绘制。见代码: public void paint(Graphics g){ g.setColor(Color.blue); g.stringtoprint(s1,300,150); } public void mouseClicked(MouseEvent mev

我有一个相当简单的小程序,我正在尝试制作-一旦点击鼠标,我们就用一个新的字符串重新绘制。这本质上是一个倒计时(3,2,1…退出)。但是,在睡眠循环结束之前,小程序似乎不想重新绘制。见代码:

        public void paint(Graphics g){
      g.setColor(Color.blue);
      g.stringtoprint(s1,300,150);

      }



public void mouseClicked(MouseEvent mev) {
    mouseClicked = true;
    int j = 0;

    while(j<=3){

        if (j < 3)
        {
        stringtoprint = "Self destruct in: " + (3-j);
        try{Thread.sleep(1000);

        }
        catch(InterruptedException e){}
        finally{            

        System.out.println("click!");} -- this line works in the console
        this.repaint(); --doesn't repaint until countdown is over(and then exits)
        }
        else {System.exit(0);} --exits applet when j=3
        j++;
    }
public void绘制(图形g){
g、 setColor(Color.blue);
g、 StringTopPrint(S1300150);
}
公共无效鼠标点击(MouseEvent mev){
mouseClicked=true;
int j=0;
虽然(j1)不要阻止EDT(事件调度线程)-当这种情况发生时,GUI将“冻结”。与其调用
线程。sleep(n)
实现一个Swing
计时器来执行重复任务,或者为长时间运行的任务实现一个
SwingWorker
。有关更多详细信息,请参阅。2)要更快获得更好的帮助,请发布一个