小应用程序创建一个线程。使用容器类方法getGraphics( )获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。
import java.applet.*;
import java.awt.*;
public class Class1 extends java. applet. Applet implements Runnable{
Thread redBall; Graphics redPen;
int rx=0,ry=0;
public void init( ){
setSize(250,200);
redBall=new Thread(this);
redPen=getGraphics( );
redPen.setColor(Color.red);
setBackground(Color.gray);
}
public void start( ){redBall.start( ); }
public void run( ){
while(true) {
if(Thread.currentThread( )==redBall){
rx=(int)(80*Math.random( ));
ry=(int)(80*Math.random( ));
red Pen.setColor(Color.red);
red Pen.fillOval(100+rx,100+ry,10,10);
try{redBall.sleep(500);}
catch(InterruptedException e) { }
redPen.setColor(Color.gray);
redPen.fillOval(100+rx,100+ry,10,10);
}
}
}
}
【正确答案】程序的功能:在随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。
【答案解析】 在run( )方法中随机产生一个坐标点,以此为左上角坐标,红色填充一个小圆形区域,500毫秒后,用背景色填充同一个小圆形区域,使红色小圆形区域消失,马上又随机产生一个坐标点,再红色填充,再消失,循环不止。