- package TheClock;
- import java.awt.*;
- import javax.swing.*;
- import java.lang.*;
- import java.awt.event.*;
- import java.util.*;
- public class TheClock extends JApplet implements Runnable,MouseMotionListener,MouseListener,MouseWheelListener{
- private Thread t;
- boolean dstatus=true;
- public static final double PI=Math.PI/180;
- Image offScreenImage=null;
- Graphics offScreenBuffer=null;
- int width=1440;
- int height=900;
- double R=90;
- int cx=250,cy=150;
- int x2,y2;
- public void init(){
- t=new Thread(this);
- t.start();
- offScreenImage=this.createImage(width,height);
- offScreenBuffer=offScreenImage.getGraphics();
- addMouseListener(this);
- addMouseMotionListener(this);
- addMouseWheelListener(this);
- }
- public void update(Graphics g){
- paint(g);
- }
- public void mouseClicked(MouseEvent e){}
- public void mousePressed(MouseEvent e){}
- public void mouseReleased(MouseEvent e){}
- public void mouseEntered(MouseEvent e){}
- public void mouseExited(MouseEvent e){}
- public void mouseDragged(MouseEvent e){
- x2=e.getX();
- y2=e.getY();
- cx=x2;
- cy=y2;
- repaint();
- }
- public void mouseMoved(MouseEvent e){}
- public void mouseWheelMoved(MouseWheelEvent e){
- int count=e.getWheelRotation();
- if(count>0){
- R+=count;
- }else if(count<0){
- R+=count;
- }
- }
- public void run(){
- while(true){
- try{
- t.sleep(1000);
- }catch(Exception e){}
- repaint();
- }
- }
- public void paint(Graphics g){
- int s,m,h;
- //创建时间
- Date rightNow=new Date();
- //获取系统时间
- String today=rightNow.toLocaleString();
- s=rightNow.getSeconds();
- m=rightNow.getMinutes();
- h=rightNow.getHours();
- g.drawImage(offScreenImage,0,0,this);
- g.setColor(Color.orange);
- g.fillOval((int)(cx-R), (int)(cy-R),(int)(2*R),(int)(2*R));
- g.setColor(Color.black);
- g.drawOval((int)(cx-R), (int)(cy-R),(int)(2*R),(int)(2*R));
- //画刻度(1,2,4,5,7,8,10,11)
- g.drawString("12", cx-8, (int)(cy-R+18));
- g.drawString("3", (int)(cx+R-18), cy+4);
- g.drawString("6",cx-4,(int)(cy+R-10));
- g.drawString("9", (int)(cx-R+12), cy+4);
- g.drawString("我的钟表", cx-20, (int)(cy-R-20));
- g.drawString(today,cx-55,(int)(cy+R+30));
- g.setFont(new Font("TimesRoman",Font.PLAIN,14));
- offScreenBuffer.clearRect(0,0,width,height);
- drawCircle(g,cx,cy,R,s,m,h);
- }
- public void drawCircle(Graphics g,double x,double y,double R,double s,double m,double h){
- double x1,y1;
- x1=x+R*Math.cos((s*6-90)*PI);
- y1=y+R*Math.sin((s*6-90)*PI);
- //画秒针
- g.setColor(Color.blue);
- g.drawLine((int)x, (int)y, (int)x1, (int)y1);
- //画分针
- g.setColor(Color.green);
- g.drawLine((int)x, (int)y, (int)(x+(R/4*3)*Math.cos((m*6-90)*PI)), (int)(y+(R/4*3)*Math.sin((m*6-90)*PI)));
- //画时针
- g.setColor(Color.red);
- g.drawLine((int)x, (int)y, (int)(x+(R/2)*Math.cos((h*30+m*6/12-90)*PI)), (int)(y+(R/2)*Math.sin((h*30+m*6/12-90)*PI)));
- //画刻度(3,6,9,12)
- g.setColor(Color.black);
- g.drawLine((int)x,(int)(y-R+10),(int)x,(int)(y-R));
- g.drawLine((int)(x+R-10),(int)y,(int)(x+R),(int)y);
- g.drawLine((int)x,(int)(y+R-10),(int)x,(int)(y+R));
- g.drawLine((int)(x-R+10),(int)y,(int)(x-R),(int)y);
- g.drawLine((int)(x+(R-5)*Math.cos(30*PI)),(int)(y+(R-5)*Math.sin(30*PI)),(int)(x+R*Math.cos(30*PI)),(int)(y+R*Math.sin(30*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(60*PI)),(int)(y+(R-5)*Math.sin(60*PI)),(int)(x+R*Math.cos(60*PI)),(int)(y+R*Math.sin(60*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(120*PI)),(int)(y+(R-5)*Math.sin(120*PI)),(int)(x+R*Math.cos(120*PI)),(int)(y+R*Math.sin(120*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(150*PI)),(int)(y+(R-5)*Math.sin(150*PI)),(int)(x+R*Math.cos(150*PI)),(int)(y+R*Math.sin(150*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(210*PI)),(int)(y+(R-5)*Math.sin(210*PI)),(int)(x+R*Math.cos(210*PI)),(int)(y+R*Math.sin(210*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(240*PI)),(int)(y+(R-5)*Math.sin(240*PI)),(int)(x+R*Math.cos(240*PI)),(int)(y+R*Math.sin(240*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(300*PI)),(int)(y+(R-5)*Math.sin(300*PI)),(int)(x+R*Math.cos(300*PI)),(int)(y+R*Math.sin(300*PI)));
- g.drawLine((int)(x+(R-5)*Math.cos(330*PI)),(int)(y+(R-5)*Math.sin(330*PI)),(int)(x+R*Math.cos(330*PI)),(int)(y+R*Math.sin(330*PI)));
- }
- }
来源: http://www.phpxs.com/code/1001596/