用JAVA写数字时钟

就是简单的数字动态时钟... 就是简单的数字动态时钟 展开
 我来答
dongwenkai1
2009-09-28 · 超过15用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:48.8万
展开全部

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

桐_傲雪
2009-09-28 · TA获得超过555个赞
知道小有建树答主
回答量:354
采纳率:0%
帮助的人:234万
展开全部
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();
}
}

//新鲜出炉的,你不追加分就是对不起我。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8037f2540
2009-09-28 · TA获得超过150个赞
知道答主
回答量:50
采纳率:0%
帮助的人:55.9万
展开全部
这个数字时钟的核心部分应该是一条1秒钟刷新一次的线程
每一秒就用 new Date()获得当前时间 并且按照你的个人想法设置相应的 SimpleDateFormat对其进行format
如果需要封装成可视化的就把这个new Date()放进一个Frame里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aless2008
2009-09-27 · 超过12用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:0
展开全部
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式