先上图!!!!
package Clock;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class clockApplet extends Applet implements Runnable {
private static final long serialVersionUID = 1L;
/* 成员变量 */
int x = 0, y = 0, r = 100; // (x,y)为(0,0)点,表示原点
int h, m, s; // 时,分,秒
double rad = Math.PI / 180; // 1°
/* 初始化函数 */
public void init() {
Calendar now = new GregorianCalendar(); /*
* GregorianCalendar(标准阳历)
* 是Calendar(日历)【国际环境下都能运行的程序】
* 的子类
*/
s = now.get(Calendar.SECOND) * 6; // 秒针转换成角度:1秒,秒针动一次,转动6°
m = now.get(Calendar.MINUTE) * 6; // 分针转换为角度:1分,分针动一次,转动6°
h = now.get(Calendar.HOUR) * 30 + now.get(Calendar.MINUTE) / 12 * 6; // 先把分化为小时,再乘以6°
/*Calendar.HOUR 显示范围:1-12(无论AM还是PM) Calendar.HOUR_OF_DAY 显示范围:1-24(包括PM)*/
Thread t = new Thread(this);
t.start();}
/* 画图函数 注意:Applet的画图界面以左上角为(0,0)原点坐标,即所有坐标均大于等于0,该点的坐标越大(且>0)*/
public void paint(Graphics g) {
super.paint(g);
/*
* paint(g)函数会重绘图像,要加上super.paint(g),表示在原来图像的基础上,再画图。
* 如果不加super.paint(g),重绘时,会将原有的绘制清空,再根据paing(g)函数绘制。
*/
g.setColor(Color.BLACK);
g.drawOval(x, y, r * 2, r * 2);// 画表
/* drawOval(x,y,width,height)以矩形恰好框住椭圆,矩形左上角的顶点坐标为(x,y) */
// 秒针
int x1 = (int) (90 * Math.sin(rad * s));
int y1 = (int) (90 * Math.cos(rad * s));
g.drawLine(r, r, r + x1, r - y1);/* drawLine(a,b,c,d) (a,b)为起始坐标 (c,d)为终点坐标 */
// 分针
x1 = (int) (80 * Math.sin(rad * m));
y1 = (int) (80 * Math.cos(rad * m));
g.drawLine(r, r, r + x1, r - y1);
// 时针
x1 = (int) (60 * Math.sin(rad * h));
y1 = (int) (60 * Math.cos(rad * h));
g.drawLine(r, r, r + x1, r - y1);
// 画数字
int d = 30;
for (int i = 1; i <= 12; i++) {
x1 = (int) ((r - 10) * Math.sin(rad * d));
y1 = (int) ((r - 10) * Math.cos(rad * d));
g.drawString(i + "", r + x1, r - y1);
d += 30;}
// 画刻度
d = 0;
for (int i = 1; i <= 60; i++) {
x1 = (int) ((r - 2) * Math.sin(rad * d));
y1 = (int) ((r - 2) * Math.cos(rad * d));
g.drawString(".", r + x1, r - y1);
d += 6;}
// 显示时间
Calendar now1 = new GregorianCalendar();
int a, b, c;
a = now1.get(Calendar.HOUR_OF_DAY);
b = now1.get(Calendar.MINUTE);
c = now1.get(Calendar.SECOND);
g.drawString(a + ":" + b + ":" + c, 0, 10);}
// 实现Runnable
public void run() {
while (true) {
try {
Thread.sleep(1000);// 间隔一秒
} catch (Exception ex) {
}
// 秒针每次走6°
s += 6;
// 秒针归零
if (s >= 360) {
s = 0;
m += 6;
// 分针走72°,时针走6° 分针的12倍,时针走一次
if (m == 72 || m == 144 || m == 288) {
h += 6;}
// 分针归零
if (m >= 360) {
m = 0;
h += 6;}
// 时针归零
if (h >= 360) {
h = 0;}}
// 重新绘制
this.repaint();} }}