资源简介
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
相关资源
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
评论
共有 条评论