⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.java

📁 IO流的项目好
💻 JAVA
字号:
//时钟
package myQQ;

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.Timer;

class Clock extends JPanel
{
	int x0,y0,R;
	final double RAD = Math.PI/180.0; //弧度单位
	Image[] im = new Image[19];
    
	Clock(int w,int h)
	{
		super();
		this.setSize(w,h);
		this.setOpaque(false); //设置透明
		x0 = this.getWidth()/2; //圆心
		y0 = this.getHeight()/2; 
		R = (x0>y0?y0:x0)-10; //半径
		for (int i = 0; i<im.length; i++)
		{	//初始图片
			im[i] = Toolkit.getDefaultToolkit().getImage("QQ/clock/"+i+".png");		
		}
		ActionListener tp = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				repaint();
			}
		};
		new Timer(1000,tp).start(); //时间对象
	}
	
	public void paintComponent(Graphics g)
	{
		Graphics2D g2 = (Graphics2D)g;
		int h,m,s,q;
		Calendar c = Calendar.getInstance();
		h = c.get(c.HOUR);
		m = c.get(c.MINUTE);
		s = c.get(c.SECOND); //取得当前时间
		g2.drawImage(im[16],0,0,x0*2,y0*2,this); //背景
		g2.drawImage(Adom.imL,0,0,5,y0*2,this); //边框
		g2.drawImage(Adom.imR,x0*2-5,0,5,y0*2,this);
		g2.drawImage(Adom.imT,0,0,x0*2,5,this); 
		g2.drawImage(Adom.imB,0,y0*2-5,x0*2,5,this);
		for (int i = 0; i<60; i++)
		{	//装饰性刻度
			this.timePaint(g2,im[12],i*6,8,8);
			if(i%5==0)
				this.timePaint(g2,im[12],i*6,8,30);	
			else
				this.timePaint(g2,im[12],i*6,4,30);	
		}
		for (int i = 0; i<12; i++)
		{	//主刻度及中间圆纽
			this.timePaint(g2,im[i],i*30,20,8);
			this.timePaint(g2,im[12],i*30,8,76);
		}
		//秒针(每6度走一格)
		q = s*6;
		this.timePaint(g2,im[13],q,20,30);		
		//分针(每6度走一格,同时将秒数平均)
		q = m*6+s/10; //q=(m+s/60)*6;
		for (int i = 0; i<5; i++)
		{
			this.timePaint(g2,im[14],q,12,R-i*10);	
		}
		//时针(每30度走一格,同时将分种数平均)
		q = h*30+m/2; //q=(h+m/60)*30;
		for (int i = 0; i<3; i++)
		{
			this.timePaint(g2,im[15],q,14,R-i*12);	
		}
		//整点报时
		if(m==0&&s%2==0&&s<30)
			g2.drawImage(im[17],x0-30,y0-30,60,60,this);
		if(m==0&&s%2==1&&s<30)
			g2.drawImage(im[18],x0-30,y0-30,60,60,this);
	}
	
	public void timePaint(Graphics2D g2,Image im,int q,int w,int L)
	{	//q--偏转度数 w--图片宽度 L--向圆心缩进距离
		int x = x0+(int)(Math.sin(RAD*q)*(R-L));
		int y = y0-(int)(Math.cos(RAD*q)*(R-L));
		g2.drawImage(im,x-w/2,y-w/2,w,w,this);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -