线程与applet?????

cbm2007 2007-11-11 05:21:14
我想用线程在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("出错!");
}

}
}
}
希望各位有心人,帮帮忙!
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2007-11-15
  • 打赏
  • 举报
回复
一般是写在paint方法里的,重写update的话最多调用下paint
楼上的代码比较另类
cbm2007 2007-11-15
  • 打赏
  • 举报
回复

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("出错!");
}

}
}


}
这样便可以看见色彩缤纷的四方形了
cbm2007 2007-11-15
  • 打赏
  • 举报
回复
请问要怎要结贴????/

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧