java 简单时钟

来源:互联网 发布:人工智能无人机 物流 编辑:程序博客网 时间:2024/04/28 19:52

学习java的路上大家写的博客无偿的给了我很大的帮助,我很感动,结合课本,我用java绘图做了一个简单的时钟,供初学者参考,注释很少,有问题直接问我,有时间一定回复。

package Mytest;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.RadialGradientPaint;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.GregorianCalendar;import java.util.Timer;import java.util.TimerTask;import javax.swing.JFrame;import javax.xml.parsers.DocumentBuilder;public class lab1 extends JFrame implements ActionListener {int x0,y0,r,h,angle,x,y,hour,minute,second,hours,xs,xy,oldxs=0,oldxy=0,xm,ym,oldxm=0,oldym=0,xh,yh,oldxh=0,oldyh=0;double angles,anglem,angleh;final double RAD = Math.PI/180;public void sx(){//public DrawClock drawClock;this.repaint();}public lab1(){this.setTitle("GD Time");this.setSize(300,300);this.setLocation(200,200);this.setDefaultCloseOperation(3);this.setResizable(false);this.setVisible(true);int delay = 1000;Timer timer = new Timer();timer.schedule(new DrawClock(), 0,delay);}class DrawClock extends TimerTask{@Overridepublic void run() {// TODO 自动生成的方法存根repaint();}}public void paint(Graphics myg){Graphics2D myg2D = (Graphics2D)myg;x0=150;y0=161;r=110;h=300;angle=60;//Insets insets = getInsets();//int lift = insets.left/2;//int right = insets.right;//int top = insets.top/2;//int height = getSize().height;//System.out.println("lift is : "+lift);//System.out.println("right is : "+right);//System.out.println("top is : "+top);//System.out.println("height is : "+height);myg2D.setStroke(new BasicStroke(2.0f));myg.drawOval(40,51, 2*r,2*r);for(int i =1;i<=12;i++){x=(int)((r+12)*Math.cos(RAD*angle)+x0);y=(int)((r+12)*Math.sin(RAD*angle)+y0);myg.drawString(""+i, x-3, h-y+26);angle-=30;}GregorianCalendar calendar = new GregorianCalendar(); hour = calendar.get(calendar.HOUR); hours = calendar.get(calendar.HOUR_OF_DAY); minute = calendar.get(calendar.MINUTE); second = calendar.get(calendar.SECOND); System.out.println("hour is "+hour); System.out.println("hours is"+hours);String sT;if(hours<10){sT = "0"+hours;}else{sT = ""+hours;}if(minute<10){sT +=":0"+minute;}else{sT +=":"+minute;}if(second<10){sT +=":0"+second;}else{sT +=":"+second;}       myg.setColor(Color.blue);    myg.fillRect(4, 27, 60, 20);    myg.setColor(Color.yellow);    myg.drawString(sT,8, 40);    //擦除秒针       if(oldxs!=0&&oldxy!=0){     myg2D.setStroke(new BasicStroke(1.5f));    myg.setColor(Color.WHITE);    myg.drawLine(x0, y0, oldxs, oldxy);    }    if(oldxh!=0&&oldyh!=0){    myg2D.setStroke(new BasicStroke(4.2f));    myg.setColor(Color.WHITE);    myg.drawLine(x0, y0, oldxh, oldxh);    }    if(oldxm!=0&&oldyh!=0){    myg2D.setStroke(new BasicStroke(2.5f));    myg.setColor(Color.WHITE);    myg.drawLine(x0, y0, oldxm, oldym);    }        //开始绘制时钟    myg2D.setStroke(new BasicStroke(1.5f));    angles = second*6*RAD;    myg.setColor(Color.red);    xs=(int)(0.9*r*Math.sin(angles))+150;    xy=r-(int)(0.9*r*Math.cos(angles))+51;    myg.drawLine(x0, y0, xs, xy);    oldxs = xs;    oldxy = xy;        myg2D.setStroke(new BasicStroke(2.5f));    anglem = minute*6*RAD;    myg.setColor(Color.black);    xm=150+(int)(0.7*r*Math.sin(anglem));    ym = 51+r-(int)(0.7*r*Math.cos(anglem));    myg.drawLine(x0, y0, xm, ym);    oldxm = xm;    oldym = ym;        myg2D.setStroke(new BasicStroke(4.2f));    angleh = hour*30*RAD;    myg.setColor(Color.black);    xh=150 +(int)(0.5*r*Math.sin(angleh));    yh=51+r-(int)(0.5*r*Math.cos(angleh));    myg.drawLine(x0, y0, xh, yh);    oldxh = xh;    oldyh = yh;    }public static void main(String[] args){new lab1();}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO 自动生成的方法存根}}


0 0
原创粉丝点击