java编写时钟程序_用java编写的时钟程序

这是一个使用Java编写的数字时钟程序,CPU占用率低,界面简洁。代码中通过Graphics2D绘制时钟,包括秒针、分针和时针,并以数字形式显示时间。程序实现了线程控制,每秒更新一次界面。
摘要由CSDN通过智能技术生成

程序运行界面如下:

0818b9ca8b590ca3270a3433284dd417.png

哈哈,还可以吧,cpu占用率1%不到,下面是开源的代码,仔细看哈!

程序代码如下: package lee; import java.awt.*; import java.text.DateFormat; import java.util.*; import javax.swing.*; //数字时钟 public class ClockDemo extends JFrame implements Runnable {   Thread clock;   final int Xpoint=180;   final int Ypoint=180;   final int R=80;   int xHour=0,yHour=0,xSecond=0,ySecond=0,xMin=0,yMin=0;   public ClockDemo()   {      super("数字时钟"); //调用父类构造函数      setFont(new Font("宋体",Font.BOLD,20)); //设置时钟的显示字体      start(); //开始进程      setSize(400,400);  //设置窗口尺寸      setVisible(true);  //窗口可视      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口时退出程序  } public void start()  { //开始进程    if(clock==null)//如果进程为空值    {       clock=new Thread(this); //实例化进程       clock.start(); //开始进程    }  } public void run()//运行进程 {     while (clock!=null)    {       repaint(); //调用paint方法重绘界面       try       {         Thread.sleep(1000);  //线程暂停一秒(1000毫秒)       }       catch (InterruptedException ex){       ex.printStackTrace();  //输出出错信息    }   }  } public void stop()//停止进程 {     clock=null; } public void paint(Graphics g)//重载组件的paint方法 {     Graphics2D g2=(Graphics2D)g;  //得到Graphics2D对象    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);    Calendar now=new GregorianCalendar(); //实例化日历对象    now.setTime(new Date());//dateFormat.format(now.getTime())    String timeInfo=""; //输出信息    int hour=now.get(Calendar.HOUR_OF_DAY); //得到小时数    int minute=now.get(Calendar.MINUTE);   //得到分数    int second=now.get(Calendar.SECOND);  //得到秒数    if (hour<=9)       timeInfo+="0"+hour+":"; //格式化输出    else       timeInfo+=hour+":";    if (minute<=9)       timeInfo+="0"+minute+":";    else       timeInfo+=minute+":";    if (second<=9)       timeInfo+="0"+second;    else        timeInfo+=second;    g.setColor(Color.yellow);  //设置当前颜色为白色    Dimension dim=getSize();  //得到窗口尺寸    g.fillRect(0,0,dim.width,dim.height);  //填充背景色为白色    g.setColor(Color.red);  //设置当前颜色为橙色    g.drawString(timeInfo,130,340);  //显示时间字符串    g.setColor(Color.green);    g.drawString(dateFormat.format(now.getTime()),20,60);    g.setColor(Color.black);    g.setFont(new Font("SAN_SERIF",Font.BOLD,15));  for(int i=0,num=12;i<360;i+=6) {   double alfa = Math.toRadians(i);  int xPos=Xpoint+(int)(R*Math.sin(alfa));  int yPos=Ypoint-(int)(R*Math.cos(alfa));  if(i==0)  {   if (num%3==0)    g.setColor(Color.red);  //  数字3,6,9,12为红色   else    g.setColor(Color.black);  // 其余数字为黑色   g.drawString(""+num,xPos-5,yPos+3);  // 写数字   num=(num+1);   }  else  {   g.setColor(Color.black);   g.drawString(".",xPos,yPos);  } }  g.setColor(Color.black);  g.fillOval(Xpoint-4,Ypoint-4,10,10);  //画秒针     xSecond=(int)(Xpoint+(R-10)*Math.sin(second*(2*Math.PI/60)));     ySecond=(int)(Ypoint-(R-10)*Math.cos(second*(2*Math.PI/60)));     g.setColor(Color.red);     g.drawLine(Xpoint,Ypoint,xSecond,ySecond);     //画分针     xMin=(int)(Xpoint+(R-20)*Math.sin((minute+second/60)*(2*Math.PI/60)));     yMin=(int)(Ypoint-(R-20)*Math.cos((minute+second/60)*(2*Math.PI/60)));     g.setColor(Color.red);     g.drawLine(Xpoint,Ypoint,xMin,yMin);     //画时针     xHour=(int)(Xpoint+(R-30)*Math.sin((hour+minute/60+second/60/60)*(2*Math.PI/12)));     yHour=(int)(Ypoint-(R-30)*Math.cos((hour+minute/60+second/60/60)*(2*Math.PI/12)));     g.setColor(Color.red);     g.drawLine(Xpoint,Ypoint,xHour,yHour); } public static void main(String[] args) {   new ClockDemo(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值