源代码如下:
import java.awt.*;import java.applet.*;import java.util.Date; //这是Java中的低级实用工具包,可以处理时间等内容。public class Applet1 extends Applet implements Runnable //有线程运行接口{Date timenow; //Date是一个时间定义与创建函数.Clock myClock; //用户自定义的类Thread clockthread=null; //设置一个线程public void start() //线程开始的类{if (clockthread==null) //如果线程为空,则{clockthread=new Thread (this); //开始新的线程clockthread.start(); //开始}}public void stop() //终止线程{clockthread.stop(); //终止线程,使它clockthread=null; //为空}public void run() //运行线程{while(true) //一个死循环,条件永远都是真的。{repaint(); //重新绘制界面try{Thread.sleep(1000);} //让线程沉睡1000毫秒,也就是一秒钟catch(InterruptedException e){} //捕获异常(也就是错误)}}public void paint(Graphics g){timenow=new Date(); //新的时间的获得//获得小时,分钟,秒钟myClock=new Clock(timenow.getHours (),timenow.getMinutes (),timenow.getSeconds ());g.drawString(timenow.toString(),25,240);//将它打印出来!myClock.show(g,100,100,100); //使面板显示}}class Clock //用户自定义的类开始,编译后,它单独成为一个CLASS文件{Clock(int hrs,int min,int sec) //类函数入口{hour=hrs%12; //将原始数据处理,得到小时minute=min; //将原始数据处理,得到分钟second=sec; //将原始数据处理,得到小时}void show(Graphics g,int cx,int cy,int rad) //重新定义SHOW函数{int hrs_len=(int)(rad*0.5), //时针的长度min_len=(int)(rad*0.6), //分钟的长度sec_len=(int)(rad*0.9); //秒钟的长度double theta;//画出钟面g.drawOval(cx-rad,cy-rad,rad*2,rad*2);//画出时针theta=(double)(hour*60*60+minute*60+second)/43200.0*2.0*Math.PI ;drawNiddle(g,Color.blue,cx,cy,hrs_len,theta);//画出分针theta=(double)(minute*60+second)/3600.0*2.0*Math.PI ;drawNiddle(g,Color.red,cx,cy,sec_len,theta);//画出秒针theta=(double)(second)/60.0*2.0*Math.PI ;drawNiddle(g,Color.green ,cx,cy,sec_len,theta);}private void drawNiddle(Graphics g,Color c,int x,int y,int len,double theta){int ex=(int)(x+len*Math.sin(theta));int ey=(int)(y-len*Math.cos(theta));g.setColor (c);g.drawLine(x,y,ex,ey);}int hour,minute,second;}
联系客服