⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.java

📁 java 编写的时钟程序,希望大家和我一起分享!谢谢!
💻 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;

public 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("Java时钟");
         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();
     }
     //实现ActionListener接口必须实现的方法
     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;
         //绘制时钟上的12个汉字
         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;
         g2D.setStroke(new BasicStroke(1.2f));
         //擦除秒针
         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();
   } 
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -