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
- java 简单时钟
- java时钟
- Java时钟
- java 时钟
- JAVA时钟
- JAVA时钟
- JAVA:时钟
- js简单时钟
- 简单的时钟实现
- 代码--简单版时钟
- 简单实现一个时钟
- gtk 简单时钟
- 简单时钟SimpleClock
- 一个简单的时钟
- 一个简单的时钟
- css3--简单制作时钟
- 简单的javascript时钟
- 简单的javascript时钟
- $IFS
- leetcode 42. Trapping Rain Water
- android实现微信网页浏览、QQ下拉效果SlidingLayout
- 插入排序
- 有助人生名人名言100句
- java 简单时钟
- Arm9+linux fl2440 驱动移植之RTC(实时时钟)和USB host
- thinkphp自带验证码出错
- 习题三1007
- Ubuntu下安装numpy and matplotlib
- [算法练习]从一个正数数组中找出重复的数,假设数组的值的范围都小于65536
- Cookie和Session的理解
- mod_jk 配置
- hadoop程序开发之——常用linux命令小结