资源简介
1、使用图形做表盘和指针(够新鲜吧!)。
2、及时获得系统时间,没有用++那样的算法,那样会有延迟的。
3、三线程(如果用一个线程秒针会跳跃多格,也就是还会延迟)。
4、如果运行期间更改系统时间,不会马上改变时钟指针(秒针是1秒钟更新,分针15秒更新,时针两分钟更新),请高手指点怎么优化。
5、指针图片因为涉及旋转,在处理时要注意旋转轴心点的问题。
代码片段和文件信息
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.Jframe;
import javax.swing.JPanel;
public class clock extends Jframe{
ImagePane imagePane[];
String mypic;
static Calendar now;
static Float s;
static Float m;
static Float h;
class s extends Thread
{
public void run()
{
while(true) {
gettime();
s = (float)(now.get(Calendar.SECOND) * 6);// 获得秒转换成度数,每秒转1次(1/360圆周)
imagePane[0].ratoteImage(s*Math.PI/180);//秒针旋转
try {Thread.sleep(1000);}
catch (Exception ex) {}
}}
}
class m extends Thread
{
public void run()
{
while(true) {
gettime();
m = (float)(now.get(Calendar.MINUTE) * 6+Math.rint(now.get(Calendar.SECOND)/15)*1.5);// 获得分钟每15秒转1次(1/360圆周)
imagePane[1].ratoteImage(m*Math.PI/180);//分针旋转
try {Thread.sleep(15000);}
catch (Exception ex) {}
}}
}
class h extends Thread
{
public void run()
{
while(true) {
gettime();
h = (float)((now.get(Calendar.HOUR_OF_DAY) - 12) * 30+ Math.rint(now.get(Calendar.MINUTE)/2));// 获得小时,每12分转1格(1/360圆周)
imagePane[2].ratoteImage(h*Math.PI/180);//时针旋转
try {Thread.sleep(120000);}
catch (Exception ex) {}
}}
}
public static void gettime()
{
now = new GregorianCalendar();
}
public clock()
{
super(“java时钟“); //调用父类构造函数
imagePane=new ImagePane[4];
Container container=getContentPane(); //得到窗口容器
for(int i=0;i<4;i++)
{
imagePane[i]=new ImagePane();
imagePane[i].setOpaque(false);//设置透明
imagePane[i].loadImage(“image/“+(3-i)+“.png“); //装载图片
imagePane[i].setBounds(0 0 500 600);//设置位置
container.add(imagePane[i]); //增加组件到容器上
}
}
public static void main(String[] args){
clock hh=new clock();
Thread ts=hh.new s();
Thread tm=hh.new m();
Thread th=hh.new h();
gettime();//取得当前时间
ts.start();tm.start();th.start();
hh.setSize(520620); //设置窗口尺寸
hh.setVisible(true); //设置窗口可视
hh.setResizable(false);//不可改变大小
hh.setLocationRelativeTo(null);//居中
hh.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
class ImagePane extends JPanel {
Image image;
BufferedImage bufImage; //用于显示的缓冲区图像
BufferedImage originalBufImage; //原始缓冲区图像
Graphics2D bufImageG; //缓冲区图像的图形环境
public void loadImage(String fileName) {
image = this.getToolkit().getImage(fileName); //取得图像
MediaTracker mt = new MediaTracker(this); //实例化媒体加载器
mt.addImage(image 0); //增加图像到加载器中
try {
mt.waitForAll(); //等待图片加载
} catch (Exception ex) {
ex.printStackTrace(); //输出出错信息
}
originalBufImage = new BufferedImage(image.getWidth(this)image.getHeight(this)BufferedImage.TYPE_INT_ARGB); //创建原始缓冲区图像
bufImage = originalB
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 381 2011-04-30 20:24 clock\.project
文件 4301 2011-05-04 11:53 clock\src\clock.java
文件 141 2011-04-30 20:31 clock\bin\java.policy.ap
文件 2076 2011-05-04 11:53 clock\bin\clock.class
文件 2550 2011-05-04 11:53 clock\bin\clock$ImagePane.class
文件 947 2011-05-04 11:53 clock\bin\clock$s.class
文件 1023 2011-05-04 11:53 clock\bin\clock$m.class
文件 1012 2011-05-04 11:53 clock\bin\clock$h.class
文件 629 2011-04-30 20:24 clock\.settings\org.eclipse.jdt.core.prefs
文件 301 2011-04-30 20:24 clock\.classpath
文件 147610 2011-05-02 23:59 clock\image\0.png
文件 5146 2011-05-03 00:12 clock\image\3.png
文件 4879 2011-05-04 12:21 clock\image\2.png
文件 5073 2011-05-04 12:22 clock\image\1.png
目录 0 2011-04-30 20:24 clock\src
目录 0 2011-04-30 20:24 clock\bin
目录 0 2011-04-30 20:24 clock\.settings
目录 0 2011-04-30 22:04 clock\image
目录 0 2011-04-30 20:24 clock
----------- --------- ---------- ----- ----
176069 19
相关资源
- 学生信息管理系统 实现学生的添加删
- 基于java的web浏览器
- JSP+Sevlet+javabean实现网站商品分类
- JAVA-WEB单点登录
- 基于Java的网络相册的开题报告
- JAVA连接SQLServer2000的jar包
- 百度贴吧java爬虫
- java做的打电话系统
- 哈夫曼编码实现压缩解压缩java
- java获取话筒音频并保存源代码
- JAVA魔板游戏 课程设计报告
- java实现socket编程网络通信多人聊天室
- 日程管理(Java)
- java数据挖掘C4.5决策树的动态生成
- JAVA编写IC卡读写器
- Java Web开发流程图--适合刚学Web开发的
- Java 五子棋 毕业设计 毕业论文 全套一
- java课程设计ATM机图形用户代码
- Java 开发大全(基础)_源码
- Java 开发大全(基础篇)源码
- 码出高效 《阿里巴巴Java开发手册》(
- ftp上传文件及文件夹
- 毕业设计论文外文文献中英文翻译—
- DNS中继服务器的实现java版
- java+class文件加密保护
- leetcode 算法题 有答案java
- Java酒店管理系统数据库
- java连接oracle数据库完成查询,插入,
- 你画我猜源码
-
图书馆信息检索系统JAVA+xm
l
评论
共有 条评论