Java Applet 入门
太平洋网络学院
第五天
一个时钟的例子
源代码如下:
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;
}