这是一个数字钟表程序,主要功能是从系统中获取当前的系统时间然后再将其显示在数字时钟上,由于整个的数字时钟都是用函数构成的,所以它可以实现一般的数 字时钟所不具有的功能,比如说它可以被鼠标指针拖动到窗口的任意位置,除此之外它还可以实现钟表大小随鼠标滚轮的滚动而变大变小的操作。

package TheClock;

import java.awt.*;

import javax.swing.*;

import java.lang.*;

import java.awt.event.*;

import java.util.*;

public class TheClock extends JApplet implements Runnable,MouseMotionListener,MouseListener,MouseWheelListener{

private Thread t;

boolean dstatus=true;

public static final double PI=Math.PI/180;

Image offScreenImage=null;

Graphics offScreenBuffer=null;

int width=1440;

int height=900;

double R=90;

int cx=250,cy=150;

int x2,y2;

public void init(){

t=new Thread(this);

t.start();

offScreenImage=this.createImage(width,height);

offScreenBuffer=offScreenImage.getGraphics();

addMouseListener(this);

addMouseMotionListener(this);

addMouseWheelListener(this);

}

public void update(Graphics g){

paint(g);

}

public void mouseClicked(MouseEvent e){}

public void mousePressed(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseDragged(MouseEvent e){

x2=e.getX();

y2=e.getY();

cx=x2;

cy=y2;

repaint();

}

public void mouseMoved(MouseEvent e){}

public void mouseWheelMoved(MouseWheelEvent e){

int count=e.getWheelRotation();

if(count>0){

R+=count;

}else if(count<0){

R+=count;

}

}

public void run(){

while(true){

try{

t.sleep(1000);

}catch(Exception e){}

repaint();

}

}

public void paint(Graphics g){

int s,m,h;

//创建时间

Date rightNow=new Date();

//获取系统时间

String today=rightNow.toLocaleString();

s=rightNow.getSeconds();

m=rightNow.getMinutes();

h=rightNow.getHours();

g.drawImage(offScreenImage,0,0,this);

g.setColor(Color.orange);

g.fillOval((int)(cx-R), (int)(cy-R),(int)(2*R),(int)(2*R));

g.setColor(Color.black);

g.drawOval((int)(cx-R), (int)(cy-R),(int)(2*R),(int)(2*R));

//画刻度(1,2,4,5,7,8,10,11)

g.drawString("12", cx-8, (int)(cy-R+18));

g.drawString("3", (int)(cx+R-18), cy+4);

g.drawString("6",cx-4,(int)(cy+R-10));

g.drawString("9", (int)(cx-R+12), cy+4);

g.drawString("我的钟表", cx-20, (int)(cy-R-20));

g.drawString(today,cx-55,(int)(cy+R+30));

g.setFont(new Font("TimesRoman",Font.PLAIN,14));

offScreenBuffer.clearRect(0,0,width,height);

drawCircle(g,cx,cy,R,s,m,h);

}

public void drawCircle(Graphics g,double x,double y,double R,double s,double m,double h){

double x1,y1;

x1=x+R*Math.cos((s*6-90)*PI);

y1=y+R*Math.sin((s*6-90)*PI);

//画秒针

g.setColor(Color.blue);

g.drawLine((int)x, (int)y, (int)x1, (int)y1);

//画分针

g.setColor(Color.green);

g.drawLine((int)x, (int)y, (int)(x+(R/4*3)*Math.cos((m*6-90)*PI)), (int)(y+(R/4*3)*Math.sin((m*6-90)*PI)));

//画时针

g.setColor(Color.red);

g.drawLine((int)x, (int)y, (int)(x+(R/2)*Math.cos((h*30+m*6/12-90)*PI)), (int)(y+(R/2)*Math.sin((h*30+m*6/12-90)*PI)));

//画刻度(3,6,9,12)

g.setColor(Color.black);

g.drawLine((int)x,(int)(y-R+10),(int)x,(int)(y-R));

g.drawLine((int)(x+R-10),(int)y,(int)(x+R),(int)y);

g.drawLine((int)x,(int)(y+R-10),(int)x,(int)(y+R));

g.drawLine((int)(x-R+10),(int)y,(int)(x-R),(int)y);

g.drawLine((int)(x+(R-5)*Math.cos(30*PI)),(int)(y+(R-5)*Math.sin(30*PI)),(int)(x+R*Math.cos(30*PI)),(int)(y+R*Math.sin(30*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(60*PI)),(int)(y+(R-5)*Math.sin(60*PI)),(int)(x+R*Math.cos(60*PI)),(int)(y+R*Math.sin(60*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(120*PI)),(int)(y+(R-5)*Math.sin(120*PI)),(int)(x+R*Math.cos(120*PI)),(int)(y+R*Math.sin(120*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(150*PI)),(int)(y+(R-5)*Math.sin(150*PI)),(int)(x+R*Math.cos(150*PI)),(int)(y+R*Math.sin(150*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(210*PI)),(int)(y+(R-5)*Math.sin(210*PI)),(int)(x+R*Math.cos(210*PI)),(int)(y+R*Math.sin(210*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(240*PI)),(int)(y+(R-5)*Math.sin(240*PI)),(int)(x+R*Math.cos(240*PI)),(int)(y+R*Math.sin(240*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(300*PI)),(int)(y+(R-5)*Math.sin(300*PI)),(int)(x+R*Math.cos(300*PI)),(int)(y+R*Math.sin(300*PI)));

g.drawLine((int)(x+(R-5)*Math.cos(330*PI)),(int)(y+(R-5)*Math.sin(330*PI)),(int)(x+R*Math.cos(330*PI)),(int)(y+R*Math.sin(330*PI)));

}

}

java数字时钟界面_Java数字时钟实现代码相关推荐

  1. java 时钟 算法分析_java实现时钟方法汇总

    import java.awt.Dimension; import java.text.SimpleDateFormat; import java.util.Calendar; import java ...

  2. java数字转为大写_java 数字转大写汉字

    packagecom.javens.test;importjava.util.HashMap;importjava.util.Map;/** * *@authorjavens *偶尔网上看到这个题目, ...

  3. java 数字补零_java数字位数不足在前后补0

    java整数或数字字符串位数不足前面或后面补零的方法,一般都是使用自定义简单封装.String.format.NumberFormat等都可以实现. 自定义简单封装/** * 数字不足位数前后补0 * ...

  4. java时钟日历_java日历时钟小程序

    java日历时钟小程序 java日历时钟小程序 Java时钟程序,按类粘贴至编译器编译即可使用. import java.awt.BorderLayout; import java.awt.Color ...

  5. java 模拟时钟程序_java模拟时钟程序

    } clock_revise(); } final_print_out(); //时钟修正 //仿真结果打印输出 下图表示了 GPSS/JAVA 的运行逻辑初始化 程序 1. 设定仿真开始时间 2.初 ...

  6. java签名算法阻止 设置_java数字签名算法之RSA

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml xsi:schemaLocation="http://maven.apache.org/POM/4. ...

  7. java观看视频次数_java数字转换视频播放次数等

    1.1万.9999.9万.1.1亿.999亿+ * 播放量的数字显示规则 1-9999,按照实际数字显示 10000-9999999,按照1万.1.1万.9999.9万 100000000-99900 ...

  8. java实验金额转换_java 数字金额转换中文金额

    public static String digitUppercase(double n){ String fraction[] = {"角", "分"}; S ...

  9. java 数字与金额_java 数字金额转换中文金额

    public static String digitUppercase(double n){ String fraction[] = {"角", "分"}; S ...

  10. java程序 图形界面_java 图形程序

    第二章 Java程序设计环境 安装 Java 开发工具包 JDK : 编写Java程序的程序员使用的软件 JRE : 运行Java程序的环境,包含JVM和基本类库, 但不包含编译器 SE, EE, M ...

最新文章

  1. 关于 linux io_uring 性能测试 及其 实现原理的一些探索
  2. js中(function(){}()),(function(){})(),$(function(){});之间的区别
  3. 普通java项目配置mybatis是总是显示数据库驱动找不到
  4. 分辨出谁在浏览Youtube、土豆
  5. Code Review:C#与JAVA的哈希表内部机制的一些区别
  6. 花钱你都学不到的“饭局”规矩~
  7. 【Linux】文件描述符与重定向
  8. Cocos Creator下删除AnySDK步骤
  9. Python3内置模块2-logging(转)
  10. kettle 零基础快速入门(一)
  11. 数电第二版 潘松 陈龙 第一章 答案
  12. 项目实习——《图书管理系统》需求分析
  13. html在下划线上加文本框,在word文本框中如何添加下划线
  14. 联想笔记本G400使用VS2013时,笔记本快捷键与软件快捷键冲突解决方案
  15. S2ANet(Align Deep Features for Oriented Object Detection)解读
  16. Coreldraw绘画看了这个才算是真正明白了什么叫绘图
  17. 基于java的毕业设计选题系统的设计与实现
  18. c语言模拟石头 剪子布游戏,用C++如何做出石头剪刀布的游戏。。。初学者不给力啊...
  19. 闲聊HTML5的新特性
  20. 火星人怒批古董微积分,误人子弟

热门文章

  1. 程序员摆地摊的正确姿势!
  2. Java 山上有一口缸可以装50升水,现在有15升。老和尚叫小和尚下山挑水,每次挑5升,要挑几次。
  3. (四)52周存钱挑战 1.0
  4. 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
  5. ps磨皮插件:DR5白金版(支持ps 2021)中文版
  6. 网站备案相关问题解答
  7. 04Selenium剩余部分及练习:爬取京东商品信息
  8. python爬取文字和图片_Selenium_Chrome爬取文本和百度图片
  9. 网易互娱的数据库选型和 TiDB 应用实践
  10. java 请求https post 接口 绕过证书验证