我想用线程在applet上随机画矩形,但不能画,代码如下:
import java.awt.*;
import javax.swing.*;
import java.applet.*;
import java.math.*;
public class PaintRects extends Applet implements Runnable {
    public void init(){
        this.run();
     
    }
    public void paint(Graphics g){    }
    public void update(Graphics g){
        Color c=new Color(Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random()));
g.setColor(c);
int demision=(int)(1000*Math.random());
g.fillRect(demision,demision,demision,demision);    }
    public void run(){
        while(true){            this.repaint();
            try{Thread.sleep(1000);}
            catch(Exception e){
                System.out.println("出错!");
                }        }
    }
}
希望各位有心人,帮帮忙!

解决方案 »

  1.   


    import java.awt.*;
    import javax.swing.*;
    import java.applet.*;
    import java.math.*;
    public class PaintRects extends Applet implements Runnable {    Thread t;               //须新建Thread并引用启动一个线程
        public void init(){
          t=new Thread(this);
           t.start() ;    }
        public void paint(Graphics g){    }
        public void update(Graphics g){
            int cr=(int)(255*Math.random());
            int cg=(int)(255*Math.random());
            int cb=(int)(255*Math.random());
            Color c=new Color(cr,cg,cb);
       g.clearRect(0,0,getSize().width,getSize().height );
       g.setColor(c);
           int x=(int)(getSize().width *Math.random());
           int y=(int)(getSize().height *Math.random());
           int demision1=(int)(getSize().width *Math.random());
           int demision2=(int)(getSize().height *Math.random());
    g.fillRect(x,y,demision1,demision2);    }
        public synchronized void run(){        while(true){
                repaint();
                try{Thread.sleep(100);}
                catch(Exception e){
                    System.out.println("出错!");
                    }        }
        }
    }
    这样便可以看见色彩缤纷的四方形了
      

  2.   

    一般是写在paint方法里的,重写update的话最多调用下paint
    楼上的代码比较另类