首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

钟头钟

2012-12-26 
小时钟/*** author zjsrustar*///package MainPackageimport javax.swing.*import java.awt.*import ja

小时钟

 /**   * author zjsrustar  */  //package MainPackage;   import javax.swing.*;   import java.awt.*;   import java.awt.geom.*;   import java.awt.event.*;   import java.util.Calendar;   import java.util.GregorianCalendar;   /**   * This is the main Function of the program.   */  public class Clock{       public static void main(String []args){           ClockFrame frame = new ClockFrame();           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);           frame.setVisible(true);       }   }   /**   * This class is used to define the main frame of the clock   */  class ClockFrame extends JFrame{       //constructor function       public ClockFrame(){           setTitle("小时钟");           setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);           setLocation(DEFAULT_LOC_WIDTH, DEFAULT_LOC_HEIGHT);           ClockPanel panel = new ClockPanel();           add(panel);       }              //variables of the frame       private int DEFAULT_LOC_WIDTH = 300;       private int DEFAULT_LOC_HEIGHT = 300;       private int DEFAULT_WIDTH = 330;       private int DEFAULT_HEIGHT = 330;   }   /**   * This class is used to defind the main panel of the clock   */  class ClockPanel extends JPanel{       public void paintComponent(Graphics g){           super.paintComponent(g);           Graphics2D g2 = (Graphics2D) g;                      //get the time of the system           GregorianCalendar calendar = new GregorianCalendar();           int hour = calendar.get(Calendar.HOUR);           int minute = calendar.get(Calendar.MINUTE);           int second = calendar.get(Calendar.SECOND);                      //draw the clock face           Ellipse2D clockFace = new Ellipse2D.Double();           clockFace.setFrameFromCenter(CENTER_X, CENTER_Y, CENTER_X+RADIUS, CENTER_Y+RADIUS);           g2.setColor(Color.BLUE);           g2.draw(clockFace);                      //draw the clock center           Ellipse2D clockCenter = new Ellipse2D.Double();           clockCenter.setFrameFromCenter(CENTER_X, CENTER_Y, CENTER_X+INNER_RADIUS, CENTER_Y+INNER_RADIUS);           g2.setColor(Color.RED);           g2.fill(clockCenter);                      //help to get the exact position of the lines           double lenX, lenY, posX, posY;                      //draw the clock second line           Line2D clockSecond = new Line2D.Double();           double secondTime = (double) calendar.get(Calendar.SECOND);           lenX = SECOND_LEN*Math.sin(2*Math.PI*secondTime/60.0);           lenY = SECOND_LEN*Math.cos(2*Math.PI*secondTime/60.0);           posX = CENTER_X + lenX;           posY = CENTER_Y - lenY;           clockSecond.setLine(CENTER_X, CENTER_Y, posX, posY);           g2.setColor(Color.PINK);           g2.draw(clockSecond);                      //draw the clock minute line           Line2D clockMinute = new Line2D.Double();           double minuteTime = (double) calendar.get(Calendar.MINUTE);           lenX = MINUTE_LEN*Math.sin(2*Math.PI*(secondTime+60*minuteTime)/3600.0);           lenY = MINUTE_LEN*Math.cos(2*Math.PI*(secondTime+60*minuteTime)/3600.0);           posX = CENTER_X + lenX;           posY = CENTER_Y - lenY;           clockMinute.setLine(CENTER_X, CENTER_Y, posX, posY);           g2.setColor(Color.GREEN);           g2.draw(clockMinute);                      //draw the clock hour line           Line2D clockHour = new Line2D.Double();           double hourTime = (double) calendar.get(Calendar.HOUR);           lenX = HOUR_LEN*Math.sin(2*Math.PI*((secondTime+60*minuteTime+3600*hourTime)/43200.0));           lenY = HOUR_LEN*Math.cos(2*Math.PI*((secondTime+60*minuteTime+3600*hourTime)/43200.0));           posX = CENTER_X + lenX;           posY = CENTER_Y - lenY;           clockHour.setLine(CENTER_X, CENTER_Y, posX, posY);           g2.setColor(Color.BLUE);           g2.draw(clockHour);                      int delay = 1000;           // actionListener           ActionListener drawClock;                  drawClock=new ActionListener(){                 public void actionPerformed(ActionEvent evt){                    repaint();                 }              };           //create timer               new Timer(delay, drawClock).start();       }              //variables of the panel       private int HOUR_LEN = 50;       private int MINUTE_LEN = 70;       private int SECOND_LEN = 90;       private int RADIUS = 100;       private int INNER_RADIUS = 2;       private int CENTER_X = 150;       private int CENTER_Y = 150;   }

热点排行