表盘式时钟,并显import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sun.util.calendar.Gregorian;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Clock extends JFrame implements ActionListener{
int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,mm,hh,old_m,old_h,ang;
final double RAD = Math.PI/180;
public Clock(){
super("Java时钟");
setDefaultCloseOperation(3);
Image image = getToolkit().getImage("clock.gif");
setIconImage(image);
setSize(200,200);
setBackground(Color.black);
setLocation(300,150);
setResizable(false);
show();
int delay = 1000;
//创建一个监听事件
ActionListener drawClock = new ActionListener(){
public void actionPerformed(ActionEvent evt){
repaint();
}
};
//创建一个时间计数器,每一秒触发一次
new Timer(delay,drawClock).start();
}
//实现ActionListener接口必须实现的方法
public void actionPerformed(ActionEvent evt){}
//绘制图形
public void paint(Graphics g){
Graphics2D g2D = (Graphics2D)g;
Insets insets = getInsets();
int L = insets.left/2, T = insets.top/2;
h = getSize().height;
g.setColor(Color.white);
//画圆
g2D.setStroke(new BasicStroke(4.0f));
g.drawOval(L+40, T+40, h-80, h-80);
r = h/2 - 40;
x0 = 40 + r - 5 + L;
y0 = 40 + r - 5 - T;
ang = 60;
//绘制时钟上的12个字
for(int i = 1;i <= 12;i ++){
x = (int)((r+10)*Math.cos(RAD*ang)+x0);
y = (int)((r+10)*Math.sin(RAD*ang)+y0);
g.drawString(""+i, x, h-y);
ang -=30;
}
//获得现在的时间
Calendar now = new GregorianCalendar();
int nowh = now.get(Calendar.HOUR_OF_DAY);
int nowm = now.get(Calendar.MINUTE);
int nows = now.get(Calendar.SECOND);
String st;
if(nowh < 10)st = "0"+nowh;
else st = ""+nowh;
if(nowm<10)st += ":0"+nowm;
else st += ":"+nowm;
if(nows<10)st += ":0"+nows;
else st += ":"+nows;
//在窗体上显示时间
g.setColor(Color.pink);
g.fillRect(L, T, 50, 28);
g.setColor(Color.blue);
g.drawString(st,L+2,T+26);
//计算时间与度数的关系
ss = 90 - nows*6;
mm = 90 - nowm*
2021-11-01 11:36:05
3KB
表盘时钟
1