Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 485|回复: 0

[Java基础知识]时钟程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-9-30 18:01:20 | 显示全部楼层 |阅读模式
    运行图:

    //时钟。
    import java.awt.*;
    import java.util.*;
    import javax.swing.*;
    class Coordinate
    {
    public int x;
    public int y;
    public void set(int x,int y)
    {
    this.x=x;
    this.y=y;
    }
    public Coordinate(int x,int y)
    {
    set(x,y);
    }
    }


    public class ChenWin12 extends JApplet implements Runnable{
             Graphics g;
    FontMetrics font_metrics;
    Thread my_thread;
    static final double pi=Math.PI;
    static final double _2pi=2*pi;

    int width;
    int height;
    Date current_time;
    Coordinate center;
             int radius=85;
    int inside_radius;
    int h_len;
    int m_len;
    int s_len;
    public void init()
    {
    g=getGraphics();
    center=new Coordinate(100,100);
    current_time=new Date();
    set_defaults();
                     paint(g);
                      
    }

    void set_defaults()
    {
                     width=getSize().width;
                     height=getSize().height;
    if(width<height)
    width=height;
    else
    width=height;
    center.set(width/2,height/2);
                     radius=(width*8)/20;
                     h_len=(radius*3)/10;
                     m_len=(radius*4)/10;
                     s_len=(radius*6)/10;
                     inside_radius=(radius*7)/10;
    Font font=new Font("TimesRoman",Font.BOLD,width/8);
    g.setFont(font);
    font_metrics=g.getFontMetrics();
    }

    public void start()
    {
    if(my_thread==null)
    {
    my_thread=new Thread(this);
    my_thread.start();
    }
    }
    public void stop()
    {
                    if(my_thread!=null)
    my_thread=null;
    }
    public void run()
    {
    while(my_thread!=null)
    {
    repaint();
    try
    {
    Thread.sleep(1000);
    }
    catch(InterruptedException e){}
    }
    }

    public void update(Graphics g)
    {
    g.setColor(Color.yellow);
    g.fillOval(center.x-inside_radius,center.y-inside_radius,
    inside_radius*2,inside_radius*2);
    current_time=new Date();
                     GregorianCalendar calendar=new GregorianCalendar();
                     calendar.setTime(current_time);
                     int hours=calendar.get(Calendar.SECOND);
                     int minutes=calendar.get(Calendar.MINUTE);
                     int seconds=calendar.get(Calendar.HOUR);

                   //  int hours=current_time.getHours();
                   //  int minutes=current_time.getMinutes();
                  //   int seconds=current_time.getSeconds();
    g.setColor(Color.black);
                     draw_hands(hours,minutes,seconds);
    }

          void draw_hands(int h,int m,int s)
      {
      int x=center.x;
      int y=center.y;
      double hour_value=h+m/60.0+s/3600.0;
      hour_value*=_2pi/12.0;
      g.drawLine(x,y,(int)(x+h_len*Math.sin(hour_value)),
      (int)(y-h_len*Math.cos(hour_value)));
                      g.drawLine(x,y-1,(int)(x+h_len*Math.sin(hour_value)),
      (int)(y-h_len*Math.cos(hour_value)));

                      double minute_value=m+s/60.0;
      minute_value*=_2pi/60.0;
        g.drawLine(x,y,(int)(x+m_len*Math.sin(minute_value)),
      (int)(y-m_len*Math.cos(minute_value)));
                              g.drawLine(x,y-1,(int)(x+m_len*Math.sin(minute_value)),
      (int)(y-m_len*Math.cos(minute_value)));

      double second_value=s*_2pi/60.0;
        g.drawLine(x,y,(int)(x+s_len*Math.sin(second_value)),
      (int)(y-s_len*Math.cos(second_value)));
                                      g.drawLine(x,y-1,(int)(x+s_len*Math.sin(second_value)),
      (int)(y-s_len*Math.cos(second_value)));


      }
      void draw_string(String string,int x,int y)
      {
      int string_width=font_metrics.stringWidth(string);
      int string_height=font_metrics.getAscent();
      g.drawString(string,x-string_width/2,y+string_height/2);
      }

    public void paint(Graphics g)
    {
    set_defaults();
    g.setColor(Color.black);
                     g.fillRect(0,0,getSize().width,getSize().height);
    g.setColor(Color.lightGray);
    g.fillOval(0,0,width,height);
    g.setColor(Color.black);
    for(int i=1;i<=12;i++)
                             draw_string(""+i,(int)(center.x+(radius-8)*Math.sin(_2pi*
    i/12)),
                             (int)(center.y-(radius-8)*Math.cos(_2pi*i/12)));
                    for(int j=0;j<60;j++)
                       draw_string(".",(int)(center.x+(radius+23)*Math.sin(_2pi*
                           j/60)),
                             (int)(center.y-8-(radius+23)*Math.cos(_2pi*j/60)));
    }

    }
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-9 11:39 , Processed in 0.391879 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表