您当前的位置:首页 > 计算机 > 编程开发 > Java

编写时钟 Applet 程序

时间:07-30来源:作者:点击数:

这是学校 java的一道期末考试题,钟表的指针借鉴的大佬的代码。。。。

代码流程

publicpublic class ClockApplet extends Applet implements Runnable{

全局变量的设置

初始化函数{

............

}

画图函数{

............

}

线程开始函数{

............

}

}

话不多说,直接上代码

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;


public class ClockApplet extends Applet implements Runnable{
int x,y,r;
int h,m,s;//时,分,秒
double rad = Math.PI/180;//  1°


//初始化函数
public void init() {
x = 0;
y = 0;
r = 100;
Calendar now = new GregorianCalendar();
s = now.get(Calendar.SECOND)*6;//转换成角度
m = now.get(Calendar.MINUTE)*6;//转换为角度
h = (now.get(Calendar.HOUR_OF_DAY)-12)*30
+ now.get(Calendar.MINUTE)/12*6;//获取小时

//线程
Thread t =new Thread(this);
t.start();
}


//画图函数
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, 300, 300);//填充背景
g.setColor(Color.BLACK);
g.drawOval(x, y, r*2, r*2);//画表盘

/*drawLine(a,b,c,d)
* a b 起点坐标
* c d 终点坐标
*/
//秒针
int x1 = (int)(90*Math.sin(rad*s));
int y1 = (int)(90*Math.cos(rad*s));
g.drawLine(x+r, y+r, (x+r)+x1, (y+r)-y1);

//分针
x1 = (int)(80*Math.sin(rad*m));
y1 = (int)(80*Math.cos(rad*m));
g.drawLine(x+r, y+r, (x+r)+x1, (y+r)-y1);

//时针
x1 = (int)(60*Math.sin(rad*h));
y1 = (int)(60*Math.cos(rad*h));
g.drawLine(x+r, y+r, (x+r)+x1, (y+r)-y1);

//画数字
int d = 28;
for(int i=1;i<=12;i++){
x1 = (int)((r-10)*Math.sin(rad*d));
y1 = (int)((r-10)*Math.cos(rad*d));
g.drawString(i+"", x+r+x1-4, x+r-y1+5);
d += 30;
}

//画刻度
d = 0;
for(int i=1;i<=60;i++){
x1 = (int)((r-2)*Math.sin(rad*d));
y1 = (int)((r-2)*Math.cos(rad*d));
g.drawString(".", x+r+x1-1, x+r-y1+1);
d += 6;
}
//显示时间
Calendar now1 = new GregorianCalendar();
int a,b,c;
a = now1.get(Calendar.HOUR_OF_DAY);
b = now1.get(Calendar.MINUTE);
c = now1.get(Calendar.SECOND);
g.drawString(a + ":" + b + ":" + c, 0, 10);

}
//实现Runnable
public void run(){
while(true){

try{

Thread.sleep(1000);//间隔一秒

}catch(Exception ex){}

//秒针每次走6°
s += 6;

//秒针归零
if(s>=360){

s = 0;
m += 6;

//分针走72°,时针走6°
if(m==72 || m==144 || m==288){
h += 6;
}

//分针归零
if(m>=360){
m = 0;
h += 6;
}

//时针归零
if(h>=360){
h = 0;

}
}

//重新绘制
this.repaint();
}
}


}

结果如下图,遗憾的是左上角的时间显示比系统时间晚了几毫秒。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门