用Java画简易时钟

最近我一直在写老师布置的时钟日期工具,但是因为部分功能还未实现,所以还不能贴完整代码,不过后面会陆续更新电子表和日历的小程序。虽然这个时钟的效果图不是特别好看,但是基本的功能已经实现。读者可以试着把它做的跟美观漂亮一点。

简易时钟的代码如下:

 1 import java.awt.*;
 2 import java.awt.geom.AffineTransform;
 3 import java.util.Calendar;
 4 import javax.swing.JFrame;
 5 import javax.swing.JPanel;
 6 //@Author:M-Y
 7 //@Time:2016/12/1
 8 public class time extends JFrame{
 9     public time(){
10         JPanel panel=new JPanel();
11         panel.setLayout(new GridLayout());
12         Clock1 c=new Clock1();
13         panel.add(c);
14         this.add(panel);
15     }
16     public static void main(String[] args) {
17         time t=new time();
18         t.setSize(300,300); //窗口大小
19         t.setTitle("Clock");//窗口名
20         t.setVisible(true); //设置为可见
21         t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22     }
23 }
24 class Clock1 extends JPanel{
25     Thread th;
26     public void run(){
27         while(true){
28             try{
29                 repaint();
30             }catch(Exception e){}
31         }
32     }
33     public void paint(Graphics g){
34         Graphics2D g2d=(Graphics2D)g;
35         //去掉锯齿
36         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
37         //清空原来的图形
38         g2d.setColor(Color.white);
39         g2d.fillRect(0,0,this.getWidth(),this.getHeight());
40         g2d.setColor(Color.black);
41         //圆心(x,y)  半径radius=100
42         int x0=150;
43         int y0=150;
44         int radius=100;
45         g2d.drawOval(50,50,200,200);
46         g2d.drawOval(48,48,204,204);
47         //画刻度
48          for(int i=0;i<60;i++){
49                g2d.fillRect(x0-2,46,3,3);
50                g2d.rotate(Math.toRadians(6),x0,y0);
51            }
52         //画12个数字
53          for(int i=0;i<12;i++){
54                 double d=Math.PI/180*i*(360/12); //每次转360/12度
55                 int x=(x0-4)+(int)((radius-12)*Math.cos(d));
56                 int y=(y0+4)+(int)((radius-12)*Math.sin(d));
57                 //因为是从顺时钟3点钟开始画,所以索引i需要加上3
58                 int j=i+3;
59                 if(j>12)
60                 j=j-12;
61                 g2d.drawString(Integer.toString(j),x,y);
62          }
63         //设置旋转重置
64          AffineTransform old=g2d.getTransform();
65          g2d.setTransform(old);
66          Calendar c=Calendar.getInstance();
67          int h=c.get(Calendar.HOUR_OF_DAY); //得到hour ----时
68          int m=c.get(Calendar.MINUTE);      //得到minute---分
69          int s=c.get(Calendar.SECOND);      //得到second---秒
70          //画时针
71          double hAngle=(h-12+m/60d)*360d/12d;
72          g2d.rotate(Math.toRadians(hAngle),x0,y0);
73          g.drawLine(x0,y0,x0,100);
74          //画分针
75          double mAngle=(m+s/60d)*360d/60d;
76          g2d.rotate(Math.toRadians(mAngle),x0,y0);
77          g.drawLine(x0,y0,x0,70);
78          //画秒针
79          double sAngle=s*360d/60d;
80          g2d.rotate(Math.toRadians(sAngle),x0,y0);
81          g.drawLine(x0,y0,x0,55);
82          repaint();
83     }
84 }

运行界面如下:

时间: 2024-11-05 02:54:39

用Java画简易时钟的相关文章

用canvas绘制一个简易时钟

在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数字三部分. 2.表盘是个圆,这个简单. 3.绘制指针时,需要先获取到系统时间,然后找到时间和角度的关系. 4.然后利用画圆函数,把起始和终点设为同一角度,即可画出射线(指针).  二. 接下来,我们再分析一下,绘制时钟需要用到的函数. 1.arc(x, y, r, start, stop) x, y

Android 开发第七弹:简易时钟(秒表)

本文承接,Android 开发第五弹:简易时钟(闹钟) 和 Android 开发第六弹:简易时钟(计时器),这一部分是关于秒表的. 布局 同样是新建一个类(StopWatchView)并扩展自LinearLayout,并将其用作布局. <myapplication.nomasp.com.clock.StopWatchView android : id = "@+id/tabStopWatch" android : layout_width = "match_parent

很值得学习的java 画图板源码

很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; import java.awt.event.*; import java.io.InputStreamReader; import java.io.Reader; import javax.swing.*; // 主界面类 public class DrawPad extends JFrame i

Android 开发第六弹:简易时钟(计时器)

接上篇Android 开发第五弹:简易时钟(闹钟) ,这次是一个时钟类应用,目前依旧是主要的功能,长得还是很挫.当然了,核心功能是有的-- 时钟 先把简单的时钟给列出来吧,这里都写的很简单,即便要用世界各个城市的话,也只是相应的加上或减去几个小时. 新建TimeView类,并扩展自LinearLayout,然后布局文件和上一篇中那么写就好了. <myapplication.nomasp.com.clock.TimeView android : id = "@+id/tabTime"

基于JAVA的简易在线聊天系统,觉得挺自豪的一个项目

项目做的比较多,最近,做的一个项目:基于JAVA的简易在线聊天系统,感觉挺自豪的. 这个项目应用JAVA编程语言实现基于网络的文本交互软件的设计和实现,达到多客户端收发文本消息的交互操作.通过服务器端多线程地监控客户端的登陆和退出,实时接收客户端发出的消息并定向发送到指定客户端,以实现在线实时文本消息传输功能:当服务器端运行时,客户端可以随时登陆和退出:客户端登陆时可以设置个人信息,包括用户名和密码:保持一定的系统稳定性,客户端与服务器端的连接稳定. 这个“基于JAVA的简易在线聊天系统”是我在

玩转html5(四)----使用canvas画一个时钟(可以动的哦!)

先给个效果图,我画的比较丑,大家可以自己美化一下, 直接上代码: <!DOCTYPE html> <meta charset="utf-8"> <html> <body> <canvas width="500" height="500" id="clock" > 您的浏览器不支持canvas </canvas> <script> //获取画布

JAVA开发简易计算器界面-SWT

大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上了解到NoSQL和Hadoop这样的信息,当时就简单觉得很新奇,没想到一年之后发展如此迅速~~当然我这样说,并不是叫大家去追寻新技术,最根本的还是基础打牢靠,休息的时候多去了解下最新的IT动态.学习下前辈高手的一些技能~~打铁还需自身硬嘛! 我写博客的目的:一来是为了促进自身的进步,二来是为了希望与

Java版简易画图板的实现

Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文章较长,但是代码是逐步递进的,可以按三部分分开来看,实现了当前部分再去看下一部分.)首先是画板的界面实现,因为我没有去找具体的图标,界面上的所有组件都是Swing的自带组件,所以界面略微有点简陋,不过如果想要优化也简单,把界面上的组件都改成自定义的图标即可.界面实现后,就可以考虑给界面的组件加上监听

通过Canvas + JS 实现简易时钟实战

最近通过各种渠道学习了下html5中的canvas元素,为了练练手就随手写了一个简易的时钟.时钟本身不复杂,没有使用图片进行美化,下面就与大家分享一下具体的代码: 这是最终实现的效果: 部分的启发点来自于 http://developer.51cto.com/art/201503/467645.htm html代码: <!DOCTYPE html>     <html>     <head>         <meta http-equiv="Conte