java钟表
来源:互联网 发布:移动商城源码 编辑:程序博客网 时间:2024/04/29 00:29
最后一次写一个java小程序,关于钟表的。实现过程如下:
1.用线程每秒钟显示一次时间(sleep(1000)),这样看上去表就在走
2.根据显示的时间画表,就是先在网上找一幅表盘图片,再按时间和指针的关系在表盘上画上指针就行了
以下是代码:
import java.applet.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.math.*;import java.awt.geom.*;public class clock extends Applet implements Runnable{Label l;Thread t=new Thread(this);Date d;Image img;static String s;double xs,ys,xm,ym,xh,yh;public void init(){setSize(350,300);setLayout(null);l=new Label("");add(l);l.setBounds(30, 240, 200, 30);xs=112;ys=80;t.start();}public void start(){img=getImage(getCodeBase(),"clock.jpg");}public void paint(Graphics g){int wt=img.getWidth(this);int ht=img.getHeight(this);g.drawImage(img, 40, 70, wt/2, ht/2, this);Graphics2D g2d=(Graphics2D)g;BasicStroke bs1=new BasicStroke(1f,1,0);//改变指针的粗细,这样比较好看BasicStroke bs2=new BasicStroke(3f,1,0);BasicStroke bs3=new BasicStroke(6f,1,0);Line2D obj1=new Line2D.Double(112, 136, (int)xs, (int)ys);Line2D obj2=new Line2D.Double(112, 137, (int)xm, (int)ym);Line2D obj3=new Line2D.Double(112, 137, (int)xh, (int)yh);g2d.setStroke(bs1);g2d.draw(obj1);g2d.setStroke(bs2);g2d.draw(obj2);g2d.setStroke(bs3);g2d.draw(obj3);}public void run(){while(true){d=new Date();s=d.toString();l.setText(s);int hour=Integer.parseInt(s.substring(11, 13))-12;//时、分、秒位置的算法int min=Integer.parseInt(s.substring(14, 16));int sec=Integer.parseInt(s.substring(17, 19)); xs=56*Math.sin(Math.toRadians(6*sec))+112; ys=136-56*Math.cos(Math.toRadians(6*sec)); xm=51*Math.sin(Math.toRadians(6*(min+sec/60)))+112; ym=136-51*Math.cos(Math.toRadians(6*(min+1/60))); xh=46*Math.sin(Math.toRadians(30*(hour+min/60)))+112; yh=136-46*Math.cos(Math.toRadians(30*(hour+min/60))); repaint();try{t.sleep(1000);}catch(InterruptedException ie){}}}}
小结:
1.指针的位置很难设定,我是一次一次尝试才得到表盘中心位置的
2.指针的算法还是有缺陷,具体说来其实是画指针的时候我是用Line2D obj3=new Line2D.Double(起点横坐标, 起点纵坐标, 终点横坐标, 终点纵坐标);来画的,而坐标只能用int 类型的数据,于是不能很好的表示时和分的位置,例如像图上表示的13:17:46,时针应该在1点往下一点,而分针也应该接近18分的位置。
- java钟表
- java钟表实例
- java 编程 钟表 线程
- 钟表
- Java小练习1(钟表)
- 模拟钟表(Java多线程 + Applet)
- Java实现一个简易的钟表
- java钟表时针分针夹角计算器
- flash 钟表 钟表代码
- JAVA Script 学习之通过setTimeout 实现钟表的效果
- 五个钟表
- 测试钟表
- 小钟表
- 显示钟表
- JS 钟表
- 示波器钟表
- Unity3d 钟表
- 钟表效果
- 图像分析- 顶点链编码(VCC)
- Android权限大全代码
- C++中static关键字详解
- H-jtag烧写u-boot到Nand Flash(mini2440)
- C# Json 格式转换
- java钟表
- 『安装配置』linux和windows直接删除oracle
- ETL_PROC_WID配置
- myeclipse中UTF-8设置
- MyEclipse 和 Eclipse 快捷键大全
- 浏览器无法访问localhost
- SOAP和WebService的那些事
- maven如何在pom文件里引用本地jar
- .利用tkprof查看trace文件[转载]