;;;;;;用Applet小程序写的;;;;;;;;
设计思路:: 画图,先是画指针起点就是圆心,终点是一个可以变的量,用系统获取的时间作为自变量
讲一下重要的,就是计算
package practice1;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.sql.Time;
import java.time.chrono.ChronoLocalDate;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.xml.crypto.Data;
import org.w3c.dom.CDATASection;
import practice3.Carculator;
public class ClockApplet extends Applet {
// 圆的左上角坐标(x,y) 半径为r
private int x,y,r;
//刻度的长度
private int length;
@Override
public void init() {
// TODO Auto-generated method stub
super.init();
x = y = 150;
r = 100;
length = 10;
this.resize(new Dimension(500, 500));
}
@Override
public void paint(Graphics g) {
//画出四个刻度
g.drawOval(x, y, 2*r, 2*r);
g.setColor(Color.BLUE);
//上刻度 0时
g.drawLine(x+r, y, x+r, y+length);
//12点的字样,坐标是调整出来的
g.drawString("12", x+r-length/2, y+2*length+5);
//下刻度 6时
g.drawLine(x+r, y+r*2, x+r, y+r*2-length);
//6点的字样,坐标是调整出来的
g.drawString("6", x+r-2, y+r*2-length-5);
//左刻度 9时
g.drawLine(x, y+r, x+length, y+r);
//9点的字样,坐标是调整出来的
g.drawString("9", x+length+5, y+r+length/2);
//右刻度 3时
g.drawLine(x+2*r, y+r, x+2*r-length, y+r);
//3点的字样,坐标是调整出来的
g.drawString("3", x+2*r-length*2, y+r+length/2);
//获取当前时间
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
String s = new String(hour+":"+minute+":"+second);
double angle1 = second*Math.PI/30.0;
double angle2 = (second/60 + minute)*Math.PI/30.0;
double angle3 = (minute/60 + hour)*Math.PI/6;
//画时针、分针、秒针
//圆心坐标(x+r,y+r)
g.drawString(s, 100, 100);
g.setColor(Color.RED);
// TODO Auto-generated method stub
//秒针
g.drawLine(x+r, y+r, (int)(x+r+r*Math.sin(angle1)), (int)(x+r-r*Math.cos(angle1)));
//分针
g.drawLine(x+r, y+r, (int)(x+r+(r-length)*Math.sin(angle2)), (int)(x+r-(r-length)*Math.cos(angle2)));
//时针
g.drawLine(x+r, y+r, (int)(x+r+(r-length*3)*Math.sin(angle3)), (int)(x+r-(r-length*3)*Math.cos(angle3)));
EXE();
}
public void EXE() {
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
repaint();
}
}, 1000);
}
}