2025年3月29日 星期六 甲辰(龙)年 月廿八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Java

编写时钟 Applet 程序

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

这是学校 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();
  • }
  • }
  • }

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

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