代码如下:

package java2;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Time;
import java.util.Date;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;public class zzj extends JFrame{public zzj() {// TODO Auto-generated constructor stub//把钟居于图像中间,其实没什么用的setLayout(new BorderLayout());add(new clock(),BorderLayout.CENTER);}public static void main(String arg[]) {zzj frame=new zzj();frame.setTitle("时钟");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(190, 220);frame.setLocationRelativeTo(null);frame.setVisible(true);}class clock extends JPanel{//xbase,ybase,radius都可以看成是半径private int xbase,ybase,radius;     private double s=0;//秒private int minute=0;//分private int hour=0;//小时public clock() {// TODO Auto-generated constructor stub//获取当前的时间Date date=new Date();hour=date.getHours();minute=date.getMinutes();s=date.getSeconds();//创建一个时间监听器,每1000毫秒 进行一次监听,就是创建一个Listener()类 ,调用其actionPerformed方法Timer timer=new Timer(1000, new Listener());timer.start();//开始计时。很重要,没有的话程序不能运行}//Listener类接口ActionListener  。所以必须重新actionPerformed方法class Listener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubs++;//每次执行次函数就是经过1秒,60秒变1分,60分变1小时if(s==60)minute++;if(minute==60)hour++;repaint();}}@Overrideprotected void paintComponent(Graphics g) {// TODO Auto-generated method stubsuper.paintComponent(g);radius=ybase=xbase=150/2;  //给x,y,r赋值,150/2是我随便赋的g.setColor(Color.black);//画出时钟的形状,也就是画圆g.drawOval(10, 10, 150, 150);//画出时钟的数字   new String(i+" ")是用于将数字int型转成string型for (int i = 1; i <= 12; i++) {g.drawString(new String(i+" "), (int)(10+xbase+Math.sin(Math.PI/6*i)*radius), (int)(10+ybase-Math.cos(Math.PI/6*i)*radius));}//画出秒针,xbase+10是圆心的x坐标, ybase+10是圆心的y坐标。(10+xbase+(Math.sin(s*Math.PI/60)*radius)是针尖的x坐标(10+ybase-(Math.cos(s*Math.PI/60)*radius))是针尖的y坐标,根据几何可以得到这个写法的g.setColor(Color.blue);g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.sin(s*Math.PI/60)*radius)), (int)(10+ybase-(Math.cos(s*Math.PI/60)*radius)));//画出分针g.setColor(Color.green);g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.sin(minute*Math.PI/60)*radius)), (int)(10+ybase-(Math.cos(minute*Math.PI/60)*radius)));//画出时针g.setColor(Color.red);g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.sin(hour*Math.PI/60)*radius)), (int)(10+ybase-(Math.cos(hour*Math.PI/60)*radius)));}}
}

运行图:

JAVA绘制简易时钟相关推荐

  1. [JavaFX] 绘制简易时钟(一)

    效果图 用当前时间创建时钟,绘制表盘. 钟表是静止的.让指针动起来,请参照:绘制简易时钟(二) 主函数文件 ShowClock: package primier; import javafx.appl ...

  2. java中有ClockPane类吗,JavaFX实现简易时钟效果(二)

    本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 在前一篇博客中,我们已经绘制了一个静止时钟. 首先进行一个微调:让表盘根据窗口大小自动调整大小: 在 ShowCl ...

  3. java 简易的闹钟设计_JavaFX实现简易时钟效果

    本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 首先要在面板中显示一个时钟,我们可以设计一个ClockPane类来显示一个时钟. 最终效果: 若要绘制一个时钟,需 ...

  4. java 简单时钟界面_JavaFX实现简易时钟效果(一)

    本文实例为大家分享了javafx实现简易时钟效果的具体代码,供大家参考,具体内容如下 效果图 用当前时间创建时钟,绘制表盘. 钟表是静止的.让指针动起来,请参照: 主函数文件 showclock: p ...

  5. java时钟课程设计,Java课程设计-时钟图形模拟

    <Java课程设计-时钟图形模拟>由会员分享,可在线阅读,更多相关<Java课程设计-时钟图形模拟(19页珍藏版)>请在人人文库网上搜索. 1.课 程 设 计 任 务 书专 业 ...

  6. C#自定义控件四简易时钟

    C#自定义控件四简易时钟 效果图: 简易时钟,顾名思义,简单容易,简单到什么程度呢?界面只有数字和指针,甚至连与当前时间都不能匹配!呵呵!就这么简单,学习嘛,从简单开始. 毫无疑问,这里肯定要用到Ti ...

  7. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  8. java k线绘制,用Java绘制K线图[Java编程]

    赞助商链接 本文"用Java绘制K线图[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具 ...

  9. 简单计算器的设计java_(基于java的简易计算器的设计.doc

    (基于java的简易计算器的设计 基于java的简易计算器的设计 摘要 自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了 ...

  10. 使用canvas绘制动画时钟

    一代码 <!DOCTYPE html > <head> <meta charset="UTF-8" ><title>绘制动态时钟&l ...

最新文章

  1. key php 转小写_PHP代码层防护与绕过
  2. 谷歌杀手Wolfram Alpha搜索引擎上线测试
  3. antd form rules字数限制_【React】antd的form表单的自定义校验规则的用法
  4. SAP Spartacus NgExpressEngineDecorator 的工作原理
  5. 数据科学家在“新常态”下发生了怎样的转变?
  6. 审计MySQL 8.0中的分类数据查询
  7. [转]Linux下Nagios的安装与配置
  8. MagicZoom bug-Strict Standards: Only variables should be assigned by reference Error
  9. c语言贪吃蛇(简易版本含完整代码)
  10. 本人psp2000和psp3000都亲自试验过,没问题,刷完可以关机,能读取ISO文件,具体某些游戏可能不能运行还需要自己实践。
  11. OCR文本扫描 轮廓检测 透视变换-唐宇迪笔记
  12. Telerik Reporting.NET,Internet或桌面程序提供交互式报告
  13. Win10 永久关闭自动更新,禁止windows10自动更新
  14. linux怎么卸载字体,Ubuntu下字体安装与卸载
  15. Excel-VLOOKUP函数的进阶使用
  16. 前端 Leader 是如何带领团队和建设团队文化的
  17. 运动目标检测之帧差法
  18. S32K144 CAN收发调试经验总结
  19. python导入excel数据-如何将Excel导入Python之中呢?
  20. TensorFlow 系列案例(3): 使用TensorFlow DNN分类器对数据进行分类

热门文章

  1. PageHelper 分页不起作用的坑
  2. 20岁跟对人,30岁做对事(一)
  3. 解决java.io.FileNotFoundException: D:\xxx\yyy (拒绝访问。)问题
  4. 零基础学习 AI 绘画的进阶之路 · 起始篇
  5. 干货 | 20个Python教程,掌握时间序列的特征分析(附代码)
  6. 操作系统的四个基本特征
  7. VR家装设计虚拟体验系统:为用户提供全新的家居装修体验
  8. 面试DevOps团队时可能会被到问哪些问题?
  9. Linux常用文本操作命令整理
  10. CSS实现单行、多行文本超出后隐藏并显示省略号