package shiyan2;
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Clock extends Applet{
public void init(){
//定时器
Timer timer=new Timer();
//开个线程任务
TimerTask task=new TimerTask(){
@Override
public void run() {
//自动执行paint函数
repaint();
}
};
//定时器执行线程任务
timer.schedule(task,0,1000);
};
//窗体移动重复执行
public void paint(Graphics g){
g.drawOval(200, 200, 300, 300);
int cx=200+300/2;
int cy=200+300/2;
Date now =new Date();
int hour = now.getHours();
int second=now.getSeconds();
int minute=now.getMinutes();
//数字
g.drawString(hour+":"+minute+":"+second, 330, 600);
g.drawString("12", 200+300/2-10, 220);
g.drawString("3", 500-20, 200+300/2);
g.drawString("6", 200+300/2, 500-20);
g.drawString("9", 200+20, 200+300/2);
//画线
drawLine(g,cx,cy,hour,minute,second,150);
//画刻度
drawKedu(g,cx,cy,150);
};
public void drawKedu(Graphics g,int cx,int cy,int r){
//画大刻度,相差30度
for(int i=1;i<=12;i++)
{
double dz= Math.toRadians(30*i-90);
//得到大刻度两个端点的坐标
int x2=cx+(int)(r*Math.sin(dz));
int y2=cx+(int)(r*Math.cos(dz));
int x1=cx+(int)((r-10)*Math.sin(dz));
int y1=cx+(int)((r-10)*Math.cos(dz));
g.drawLine(x1, y1, x2, y2);
}
//画小刻度,相差6度
for(int i=1;i<=60;i++)
{
double dz= Math.toRadians(6*i-90);
//得到小刻度两个端点的坐标
int x2=cx+(int)(r*Math.sin(dz));
int y2=cx+(int)(r*Math.cos(dz));
int x1=cx+(int)((r-5)*Math.sin(dz));
int y1=cx+(int)((r-5)*Math.cos(dz));
g.drawLine(x1, y1, x2, y2);
}
}
public void drawLine(Graphics g,int cx,int cy,int hour,int minute,int second,int r) {
if(hour<=12)
{
hour=hour*2;
}
//得到弧度
double sz = Math.toRadians((hour/24.0)*360-90);
double fz = Math.toRadians((minute/60.0)*360-90);
double mz = Math.toRadians((second/60.0)*360-90);
//得到时针坐标
int sx=cx+(int)((r-120)*Math.cos(sz));
int sy=cy+(int)((r-120)*Math.sin(sz));
//得到分针坐标
int fx=cx+(int)((r-60)*Math.cos(fz));
int fy=cy+(int)((r-60)*Math.sin(fz));
//得到秒针坐标
int mx=cx+(int)((r-30)*Math.cos(mz));
int my=cy+(int)((r-30)*Math.sin(mz));
//画线
g.drawLine(cx, cy, sx, sy);
g.drawLine(cx, cy, fx, fy);
g.drawLine(cx, cy, mx, my);
}
}
用java画的动态时钟
猜你喜欢
转载自blog.csdn.net/weixin_43294560/article/details/105175952
今日推荐
周排行