📄 clock.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 + -