A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Faith_Yee 中级黑马   /  2014-9-9 01:09  /  667 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <font color="#333333"><img src="http://bbs.itheima.com/forum.php?mod=image&aid=54232&size=300x300&key=6ced43ee332f1de1&nocache=yes&type=fixnone" aid="attachimg_54232" alt="" border="0">
  2. //时钟。

  3.                     import java.awt.*;

  4.                     import java.util.*;

  5.                     import javax.swing.*;

  6.                     class Coordinate

  7.                     {

  8.                     public int x;

  9.                     public int y;

  10.                     public void set(int x,int y)

  11.                     {

  12.                     this.x=x;

  13.                     this.y=y;

  14.                     }

  15.                     public Coordinate(int x,int y)

  16.                     {

  17.                     set(x,y);

  18.                     }

  19.                     }

  20.                     

  21.                     

  22.                     public class ChenWin12 extends JApplet implements Runnable{

  23.         Graphics g;

  24.   FontMetrics font_metrics;

  25.   Thread my_thread;

  26.   static final double pi=Math.PI;

  27.   static final double _2pi=2*pi;

  28.                     

  29.                     int width;

  30.                     int height;

  31.                     Date current_time;

  32.                     Coordinate center;

  33.         int radius=85;

  34.   int inside_radius;

  35.   int h_len;

  36.   int m_len;

  37.   int s_len;

  38.   public void init()

  39.       {

  40.       g=getGraphics();

  41.       center=new Coordinate(100,100);

  42.       current_time=new Date();

  43.       set_defaults();

  44.                 paint(g);

  45.                  

  46.       }

  47.                     

  48.                     void set_defaults()

  49.                     {

  50.                 width=getSize().width;

  51.                 height=getSize().height;

  52.   if(width<height)

  53.       width=height;

  54.       else

  55.       width=height;

  56.       center.set(width/2,height/2);

  57.                 radius=(width*8)/20;

  58.                 h_len=(radius*3)/10;

  59.                 m_len=(radius*4)/10;

  60.                 s_len=(radius*6)/10;

  61.                 inside_radius=(radius*7)/10;

  62.   Font font=new Font("TimesRoman",Font.BOLD,width/8);

  63.       g.setFont(font);

  64.       font_metrics=g.getFontMetrics();

  65.       }

  66.                     

  67.                     public void start()

  68.                     {

  69.                     if(my_thread==null)

  70.                     {

  71.                     my_thread=new Thread(this);

  72.                     my_thread.start();

  73.                     }

  74.                     }

  75.                     public void stop()

  76.                     {

  77.                if(my_thread!=null)

  78.       my_thread=null;

  79.       }

  80.       public void run()

  81.       {

  82.       while(my_thread!=null)

  83.       {

  84.       repaint();

  85.       try

  86.       {

  87.       Thread.sleep(1000);

  88.       }

  89.       catch(InterruptedException e){}

  90.       }

  91.       }

  92.                     

  93.                     public void update(Graphics g)

  94.                     {

  95.                     g.setColor(Color.yellow);

  96.                     g.fillOval(center.x-inside_radius,center.y-inside_radius,

  97.                     inside_radius*2,inside_radius*2);

  98.                     current_time=new Date();

  99.                 GregorianCalendar calendar=new GregorianCalendar();

  100.                 calendar.setTime(current_time);

  101.                 int hours=calendar.get(Calendar.SECOND);

  102.                 int minutes=calendar.get(Calendar.MINUTE);

  103.                 int seconds=calendar.get(Calendar.HOUR);

  104.                     

  105.               //  int hours=current_time.getHours();

  106.               //  int minutes=current_time.getMinutes();

  107.              //   int seconds=current_time.getSeconds();

  108.       g.setColor(Color.black);

  109.                 draw_hands(hours,minutes,seconds);

  110.       }

  111.                     

  112.      void draw_hands(int h,int m,int s)

  113. {

  114. int x=center.x;

  115. int y=center.y;

  116. double hour_value=h+m/60.0+s/3600.0;

  117. hour_value*=_2pi/12.0;

  118. g.drawLine(x,y,(int)(x+h_len*Math.sin(hour_value)),

  119. (int)(y-h_len*Math.cos(hour_value)));

  120.                  g.drawLine(x,y-1,(int)(x+h_len*Math.sin(hour_value)),

  121. (int)(y-h_len*Math.cos(hour_value)));

  122.                     

  123.                  double minute_value=m+s/60.0;

  124. minute_value*=_2pi/60.0;

  125.    g.drawLine(x,y,(int)(x+m_len*Math.sin(minute_value)),

  126. (int)(y-m_len*Math.cos(minute_value)));

  127.                          g.drawLine(x,y-1,(int)(x+m_len*Math.sin(minute_value)),

  128. (int)(y-m_len*Math.cos(minute_value)));

  129.                     

  130. double second_value=s*_2pi/60.0;

  131.    g.drawLine(x,y,(int)(x+s_len*Math.sin(second_value)),

  132. (int)(y-s_len*Math.cos(second_value)));

  133.                                  g.drawLine(x,y-1,(int)(x+s_len*Math.sin(second_value)),

  134. (int)(y-s_len*Math.cos(second_value)));

  135.                     

  136.                     

  137. }

  138. void draw_string(String string,int x,int y)

  139. {

  140. int string_width=font_metrics.stringWidth(string);

  141. int string_height=font_metrics.getAscent();

  142. g.drawString(string,x-string_width/2,y+string_height/2);

  143. }

  144.                     

  145.                     public void paint(Graphics g)

  146.                     {

  147.                     set_defaults();

  148.                     g.setColor(Color.black);

  149.                 g.fillRect(0,0,getSize().width,getSize().height);

  150.       g.setColor(Color.lightGray);

  151.       g.fillOval(0,0,width,height);

  152.       g.setColor(Color.black);

  153.       for(int i=1;i<=12;i++)

  154.                         draw_string(""+i,(int)(center.x+(radius-8)*Math.sin(_2pi*

  155.       i/12)),

  156.                         (int)(center.y-(radius-8)*Math.cos(_2pi*i/12)));

  157.                for(int j=0;j<60;j++)

  158.                   draw_string(".",(int)(center.x+(radius+23)*Math.sin(_2pi*

  159.                       j/60)),

  160.                         (int)(center.y-8-(radius+23)*Math.cos(_2pi*j/60)));

  161.       }

  162.                     

  163.                     }

  164.                     </font><p></p>
复制代码

clock.jpg (106.77 KB, 下载次数: 35)

clock.jpg

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马