• 大小: 161KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Java
  • 标签: java  图形  时钟  界面  

资源简介

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.applet

     文件       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


评论

共有 条评论