java钟表时钟显示时间

时间:2014-05-10 16:18:50
【文件属性】:

文件名称:java钟表时钟显示时间

文件大小:3KB

文件格式:JAVA

更新时间:2014-05-10 16:18:50

表盘时钟

表盘式时钟,并显import java.awt.*; import java.awt.event.*; import javax.swing.*; import sun.util.calendar.Gregorian; 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); Image image = getToolkit().getImage("clock.gif"); setIconImage(image); setSize(200,200); setBackground(Color.black); setLocation(300,150); setResizable(false); show(); int delay = 1000; //创建一个监听事件 ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt){ repaint(); } }; //创建一个时间计数器,每一秒触发一次 new Timer(delay,drawClock).start(); } //实现ActionListener接口必须实现的方法 public void actionPerformed(ActionEvent evt){} //绘制图形 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()); //擦除时针 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(); } } 示数字时间


网友评论

  • 值得参考 值得参考
  • 程序写的还不错
  • 还不错,界面带美化
  • 不错 适合初学者
  • 资源介绍些的真详细!哈哈!谢谢了!!!
  • 实现的不错,可以参考。
  • 功能简单实现 加上点美工会更好
  • 代码中有点点小的缺陷,自己改了哈,好像可以使用了。。
  • 程序画面实在有待提高....
  • 程序写的还不错
  • 初学java 能看懂 对我很有用谢谢
  • 代码有点乱,功能很不错
  • 很不错,适合初学者学习
  • 代码实现的不错,谢谢分享,挺好....
  • 简洁,谢谢楼主
  • 基本功能实现了,但有改进的地方。
  • 代码实现的不错,谢谢分享,挺好
  • 代码有点麻烦,要仔细看,找到突破点,很好
  • 程序能实现功能,不够美观
  • 这个程序比较简单,但是不够美观。