用JAVA写数字时钟

就是简单的数字动态时钟

import javax.swing.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.*;

import java.util.Calendar;

import java.util.GregorianCalendar;

class Clock extends JFrame implements ActionListener{

       int x,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,ss,mm,hh,old_m,old_h,ang;

       final double RAD=Math.PI/180;

   

       

       public Clock(){

           super("Clock by kikiwawa");

           setDefaultCloseOperation(3);

           setSize(200,200);

           setBackground(Color.BLACK);

           setLocation(300,150);

           setResizable(false);

           setVisible(true);

           int delay = 1000;

         

           ActionListener drawClock = new ActionListener(){

               public void actionPerformed(ActionEvent evt){

                   repaint();

               }

           };

         

           new Timer(delay,drawClock).start();

       }

       

       public void actionPerformed(ActionEvent e){

       }

   

       

       public void paint(Graphics g){

           Graphics2D g2D = (Graphics2D)g;

           Insets insets = getInsets();

           int L = insets.left/2,T = insets.top/2;

           h = getSize().height;

           g.setColor(Color.white);

         

           g2D.setStroke(new BasicStroke(4.0f));

           g.drawOval(L+40,T+40,h-80,h-80);

           r=h/2-40;

           x0=40+r-5+L;

           y0=40+r-5-T;

           ang=60;

        

           for(int i=1;i<=12;i++){

               x=(int)((r+10)*Math.cos(RAD*ang)+x0);

               y=(int)((r+10)*Math.sin(RAD*ang)+y0);

               g.drawString(""+i,x,h-y);

               ang-=30;

           }

           

           Calendar now= new GregorianCalendar();

           int nowh= now.get(Calendar.HOUR_OF_DAY);

           int nowm= now.get(Calendar.MINUTE);

           int nows= now.get(Calendar.SECOND);

           String st;

           if(nowh<10) st="0"+nowh;else st=""+nowh;

           if(nowm<10) st+=":0"+nowm;else st+=":"+nowm;

           if(nows<10) st+=":0"+nows;else st+=":"+nows;

           

           g.setColor(Color.pink);

           g.fillRect(L,T,50,28);

           g.setColor(Color.blue);

           g.drawString(st,L+2,T+26);

           

           ss=90-nows*6;

           mm=90-nowm*6;

           hh=90-nowh*30-nowm/2;

           x0=r+40+L;

           y0=r+40+T;

          

           if(olds_x>0){

               g.setColor(getBackground());

               g.drawLine(x0,y0,olds_x,h-olds_y);

           }

           else{

               old_m = mm;

               old_h = hh;

           }

      

           x=(int)(r*0.9*Math.cos(RAD*ss))+x0;

           y=(int)(r*0.9*Math.sin(RAD*ss))+y0-2*T;

           g.setColor(Color.yellow);

           g.drawLine(x0,y0,x,h-y);

           olds_x=x;

           olds_y=y;

           g2D.setStroke(new BasicStroke(2.2f));

        

           if(old_m!=mm){

               g.setColor(getBackground());

               g.drawLine(x0,y0,oldm_x,h-oldm_y);

           }

           

           x=(int)(r*0.7*Math.cos(RAD*mm))+x0;

           y=(int)(r*0.7*Math.sin(RAD*mm))+y0-2*T;

           g.setColor(Color.green);

           g.drawLine(x0,y0,x,h-y);

           oldm_x=x;

           oldm_y=y;

           old_m=mm;

           g2D.setStroke(new BasicStroke(3.4f));

          

           if(old_h!=hh){

               g.setColor(getBackground());

               g.drawLine(x0,y0,oldh_x,h-oldh_y);

           }

           

           x=(int)(r*0.5*Math.cos(RAD*hh))+x0;

           y=(int)(r*0.5*Math.sin(RAD*hh))+y0-2*T;

           g.setColor(Color.red);

           g.drawLine(x0,y0,x,h-y);

           oldh_x=x;

           oldh_y=y;

           old_h=hh;        

       }

   

       public static void main(String[] args){

           Clock c = new Clock();

}       } 

 4

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-28
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.Timer;

public class test1 extends JFrame{
public test1(){
super();
setSize(300,100);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Timer timer = new Timer(1000, new ActionListener(){
public void actionPerformed(ActionEvent evt) {
setTitle( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
);
timer.start();
}

public static void main( String... args ){
new test1();
}
}

//新鲜出炉的,你不追加分就是对不起我。本回答被提问者和网友采纳
第2个回答  2009-09-28
这个数字时钟的核心部分应该是一条1秒钟刷新一次的线程
每一秒就用 new Date()获得当前时间 并且按照你的个人想法设置相应的 SimpleDateFormat对其进行format
如果需要封装成可视化的就把这个new Date()放进一个Frame里面
第3个回答  2009-09-27
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));