第一步:设置面板内容及数据


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package time;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JPanel;
/**
 *
 *@author huyongjian Oracle(Compus Solution Group)
 * @Date  2013-7-18
 * @version 2.0
 * @since JDK1.6(建议)
   Copy Right Information    COMPUS SOLUTION GROUP
   IDE:Eclipse
   class:ClockPanelClass 设置面板内容及数据
 */
public class ClockPanelClass extends JPanel implements Runnable
{
    private double radius=100;//半径100
    private double minutes;
    private double second;
    private double hours;
    private double minute_hand_length=0.7*radius;
    private double hour_hand_length=0.5*radius;
    private double second_hand_length=0.9*radius;
    private String weekString,dayString;
    private int week,day,year,month;
    //@Override 画出时钟模型
    public void paintComponent(Graphics g) {
                Calendar now=Calendar.getInstance();
                minutes=now.get(Calendar.MINUTE);  
                hours=now.get(Calendar.HOUR);
                second=now.get(Calendar.SECOND);
                day=now.get(Calendar.DAY_OF_MONTH);
                week=now.get(Calendar.DAY_OF_WEEK);
        super.paintComponent(g);
        Graphics2D g2=(Graphics2D)g;      
        Ellipse2D circle=new Ellipse2D.Double(15,20,2*radius,2*radius);
                g2.setColor(Color.ORANGE);//外边的圈圈的橙色
        g2.draw(circle);                 
                                                                                  
                g2.setStroke(new BasicStroke(4,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND));
                g2.setColor(Color.BLUE);   //小点点是蓝色
        double hourAngle=Math.toRadians(90-360*(hours/12+minutes/720));
        drawHand(g2,hourAngle,hour_hand_length);       
                g2.setColor(Color.red);//分钟是红色
                g2.setStroke(new BasicStroke(3,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND));
        double minuteAngle=Math.toRadians(90-360*(minutes/60+second/3600));
        drawHand(g2,minuteAngle,minute_hand_length);             
                g2.setStroke(new BasicStroke(2,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND));
                g2.setColor(Color.gray);//秒钟
        double secondAngle=Math.toRadians(90-360*second/60);
        drawHand(g2,secondAngle,second_hand_length);
                g2.setColor(Color.BLUE);//时钟
                for(int i=0;i<12;i++){
                    g2.setStroke(new BasicStroke(3,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND));
                    g2.drawLine((int)(115+100*Math.sin(30/180.0*i*Math.PI)),(int)(120+100*Math.cos(30/180.0*i*Math.PI)),
                            (int)(117+100*Math.sin(30/180.0*i*Math.PI)),(int)(122+100*Math.cos(30/180.0*i*Math.PI)));
                }
                g2.setStroke(new BasicStroke(2,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND));
                for(int i=0;i<60;i++){
                    g2.drawLine((int)(115+100*Math.sin(6/180.0*i*Math.PI)),(int)(120+100*Math.cos(6/180.0*i*Math.PI)),
                            (int)(115+100*Math.sin(6/180.0*i*Math.PI)),(int)(120+100*Math.cos(6/180.0*i*Math.PI)));
                }
                g2.setColor(Color.black);//设置12 3 6 9的数字颜色
                g2.setFont(new Font("",Font.BOLD,10));
                g2.drawString("12",108,38);
                g2.drawString("3",205,126);
                g2.drawString("6",112,215);
                g2.drawString("9",22,126);
                g2.setColor(Color.red);//日期和星期
                g2.setFont(new Font("黑体",Font.BOLD,15));                     
                g2.drawString(" "+dayString, 67255);
                g2.drawString(" "+"星期"+weekString, 77285); 
                g2.setColor(Color.black);//数字时钟
                SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
                String rtime = dateFormat.format(new Date()).toString();
                g2.drawString(rtime,76,315);
    }
    public void drawHand(Graphics2D g2,double angle,double handLength){
        Point2D end=new Point2D.Double(radius+10+handLength*Math.cos(angle),radius+20-handLength*Math.sin(angle));
        Point2D center=new Point2D.Double(radius+10,radius+20);
        g2.draw(new Line2D.Double(center,end));
    }
                                                                      
    //设置数字时间
    public void setTime(){
             Calendar c = Calendar.getInstance();
             hours=c.get(Calendar.HOUR);
             minutes=hours*60+c.get(Calendar.MINUTE);
             second=minutes*60+c.get(Calendar.SECOND);
            week=c.get(Calendar.DAY_OF_WEEK);
            year=c.get(Calendar.YEAR);
            month=c.get(Calendar.MONTH)+1;
            day=c.get(Calendar.DAY_OF_MONTH);
            dayString=year+"-"+month+"-"+day;
            switch(week){
                case 1:{
                    weekString="日";
                    break;   
                }    
                case 2:{ 
                    weekString="一";
                    break;   
                }
                case 3:{
                    weekString="二";
                    break;    
                }   
                case 4:{
                    weekString="三";
                    break;    
                }
                case 5:{
                    weekString="四";
                    break;   
                }    
                case 6:{
                    weekString="五";
                    break;   
                }   
                case 7:{
                    weekString="六";
                    break;   
                }  
                default:
                    break
            }
             repaint();
    }
   // @Override
        public void run(){
            for(;;){
                sleep1();
            }
        }
//线程一秒钟,秒钟动一次
    public void sleep1(){
        try{
            Thread.sleep(1000);
            setTime();
        }
        catch(InterruptedException e){
        }
    }
}

第二步:设置面板属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package time;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.UIManager;
/**
 *
 *@author huyongjian Oracle(Compus Solution Group)
 * @Date  2013-7-18
 * @version 2.0
 * @since JDK1.6(建议)
   Copy Right Information    COMPUS SOLUTION GROUP
   IDE:Eclipse
   class:JTextFieldFrameClass 设置面板属性
 */
class JTextFieldFrameClass extends JFrame {
        /**
     *
     */
    private static final long serialVersionUID = 1L;
        ClockPanelClass clock;
    public JTextFieldFrameClass(){
        super("时钟");
        setSize(240,370);
        clock=new ClockPanelClass();
        //设置clock在面板的中间显示
        getContentPane().add(clock,BorderLayout.CENTER);
        this.setColor.RED);
         //设置居中显示
        this.setLocationRelativeTo(null);
       //修改java左上角的图标
        URL url = this.getClass().getResource("clock.png");
        Image img = Toolkit.getDefaultToolkit().getImage(url);
        this.setIconImage(img);
        //设置面板可见
        setVisible(true);
        //设置不可变大
        setResizable(false);
        }
                                                        
}

第三步:main主函数调用写好的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package time;
import javax.swing.JFrame;
/**
 *
 *@author huyongjian Oracle(Compus Solution Group)
 * @Date  2013-7-18
 * @version 2.0
 * @since JDK1.6(建议)
   Copy Right Information    COMPUS SOLUTION GROUP
   IDE:Eclipse
   class:Test2 main主函数
 */
class ColockMain {
    public static void main(String []args){
            JTextFieldFrameClass frame=new JTextFieldFrameClass();
            Thread tt=new Thread(frame.clock);
            tt.start();
            //关闭窗口,退出应用!
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

第四步:展示

第五步:当然如果你觉得好,请入群:160243674 Java程序猿联盟,共同分享共同进步!

需要源码可以联系我!

本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1263394,如需转载请自行联系原作者

用Java编写的模仿电子钟系统相关推荐

  1. java编写超市收银系统_java编写的超市收银系统

    [实例简介] 用java编写的超市收银系统, [实例截图] [核心代码] ad9ea874-4694-4cc4-b634-760c9c1b6b65 └── 超市收银系统 ├── sql │   ├── ...

  2. 用Java编写一个工资支付系统

    工资支付系统: 要求:为某公司编写一个工资支付系统,用于计算某一类员工的月薪.该公司共有四类员工:领固定月薪的(SalariedEmployee):计时取酬的(HourlyEmployee,如果一月工 ...

  3. 用Java编写城市公交查询系统

    城市公交查询系统是一个实用的应用程序,可以帮助用户在城市中查找公交车路线.站点和到达时间.在这个回答中,我将用Java编写一个城市公交查询系统,包括代码和说明. 一.系统架构和功能 该城市公交查询系统 ...

  4. Java编写的公交查询系统 功能非常齐全 完整源码

    今天为大家分享一个java语言编写的教室管理系统,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...

  5. Java编写的医院预约系统 完整源码,直接使用

    今天为大家分享一个java语言编写的医院预约程序,目前系统功能已经很全面,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语 ...

  6. JAVA编写的火车票售票系统

    正文 一,Tanbanpackage hangban;import java.util.Scanner;import hangban.Flight;public class Tanban {stati ...

  7. Java 编写飞鸽传书系统 窗体程序 完整源码

    今天为大家分享简单的飞鸽传书程序的开发与制作,目前系统已经完成了初步功能,后续会进一步完善.整个系统界面漂亮,有完整源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步 开发环境 开发语言 ...

  8. Java小程序——模仿Win系统画板

    好久之前的一个小作业,用Java实现画板.毕竟当时花费不少功夫调试,在这里分享给大家,希望能够对需要的小伙伴有所帮助!声明一下,以下代码为参考网上相关代码修改,绝非完全原创. 运行效果图如下: 话不多 ...

  9. java编写火车订票系统_毕业设计(论文)-基于JavaWeb技术的火车订票系统.doc

    本科生毕业设计 题 目 基于JavaWeb技术的火车订票系统 姓 名 学 号 院 系 专 业 信息与计算科学 指导教师 20 年 月 教务处制 本科生毕业设计声明 本人郑重声明:所呈交的毕业设计,是本 ...

最新文章

  1. 如何高效地逛Github?
  2. BZOJ 4386 Luogu P3597 [POI2015]Wycieczki (矩阵乘法)
  3. 降低成本,提高生产力—8句话讲清RPA的部署
  4. maskrcnn还可以加网络吗_桃子加蜂蜜可以榨汁吗?桃子和蜂蜜可以一起吃吗?原来可以这样吃...
  5. Django(part21)--models字段
  6. 124angular1实现无限表单(仅供自己看)
  7. 数字图像处理应用matlab,数字图像处理与应用(MATLAB版)
  8. SQL Sever 性能调优
  9. 云服务器cvm系统,云服务器 cvm 自带系统
  10. c语言变量的值也可以不改变6,C语言学习复盘整理笔记(六)
  11. SQL Server系统数据库–模型数据库
  12. 元注解@interface的理解使用
  13. python request发送用户名密码_Python3 利用requests 库进行post携带账号密码请求数据的方法...
  14. STM32Cube配置LCD1602液晶屏
  15. parse error on line 1, column 4: bare “ in non-quoted-field
  16. STM32串口DMA方式接收数据。类似环形FIFO。超省CPU资源!
  17. 3ds Max 2014安装SupperMap 插件
  18. 二次冲击港交所,手握宝可梦、游戏王的云涌控股困于IP依赖
  19. unity3d 人物对话_unity3d实现插件快速开发对话系统
  20. python 循环实现延时_Python延时操作实现方法示例

热门文章

  1. 腾讯阿里原来是这样设计api的
  2. css阴影设置透明度,css3圆角 阴影 透明度
  3. 删除iPhone邮箱smtp服务器,如何在 iPhone 上删除或清除邮件
  4. 经济学的几个经典故事
  5. 数据库应用-E commerce管理
  6. 【计算机体系结构】计算机体系结构(6) 并行处理技术(1) SIMD并行计算机、算法和互联网络
  7. 西安电子科技大学电磁场实验四仿真结果展示
  8. [java篇]包和继承,组合
  9. 强势品牌战略规划五步骤
  10. Android studio创建一个根目录生成手电修改参数app