?? clock.java
字號:
import java.util.*;import java.awt.*;import java.applet.*;public class Clock extends Applet implements Runnable { Thread timer = null; int lastxs=0, lastys=0, lastxm=0, lastym=0, lastxh=0, lastyh=0; public void init() { setBackground(Color.white); //設置Applet背景 } public void paint(Graphics g) //顯示數字和圖形時鐘 { int xh, yh, xm, ym, xs, ys, s, m, h, xcenter, ycenter; Date rightnow = new Date(); //獲取當前日期和時間 String today = rightnow.toLocaleString(); //時間對應的字符串 s = rightnow.getSeconds(); m = rightnow.getMinutes(); h = rightnow.getHours(); xcenter=80; //圖形鐘的原點 ycenter=80; //以下計算秒針、分針、時針位置 xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter); ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter); xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter); ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter); xh = (int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*30+xcenter); yh = (int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*30+ycenter); g.setFont(new Font("TimesRoman", Font.PLAIN, 14)); g.setColor(Color.blue); g.drawArc(xcenter-50,ycenter-50,100,100,0,360); //畫圓和數字 g.setColor(Color.darkGray); g.drawString("9",xcenter-45,ycenter+3); g.drawString("3",xcenter+40,ycenter+3); g.drawString("12",xcenter-5,ycenter-37); g.drawString("6",xcenter-3,ycenter+45); //時間變化時,需要重新畫各個指針,即先消除原有指針,然后畫新指針 g.setColor(getBackground()); //用背景色畫線,可以消除原來畫的線 if (xs != lastxs || ys != lastys) //秒針變化 { g.drawLine(xcenter, ycenter, lastxs, lastys); g.drawString(today, 5, 150); //消除數字時鐘 } if (xm != lastxm || ym != lastym) //分針變化 { g.drawLine(xcenter, ycenter-1, lastxm, lastym); g.drawLine(xcenter-1, ycenter, lastxm, lastym); } if (xh != lastxh || yh != lastyh) //時針變化 { g.drawLine(xcenter, ycenter-1, lastxh, lastyh); g.drawLine(xcenter-1, ycenter, lastxh, lastyh); } g.setColor(Color.darkGray); //顯示數字時鐘 g.drawString(today, 5, 150); g.setColor(Color.blue); //畫新指針 g.drawLine(xcenter, ycenter, xs, ys); g.drawLine(xcenter, ycenter-1, xm, ym); g.drawLine(xcenter-1, ycenter, xm, ym); g.drawLine(xcenter, ycenter-1, xh, yh); g.drawLine(xcenter-1, ycenter, xh, yh); lastxs=xs; lastys=ys; //保存指針位置 lastxm=xm; lastym=ym; lastxh=xh; lastyh=yh; } public void start() //啟動線程 { if(timer == null) { timer = new Thread(this); timer.start(); } } public void stop() //停止線程 { timer = null; } public void run() //每隔一秒鐘,刷新一次畫面 { while (timer != null) { try { Thread.sleep(1000); } catch (InterruptedException e) {} repaint(); //調用paint()方法重畫時鐘 } timer = null; } public void update(Graphics g) { paint(g); //重寫該方法是為了消除抖動現象 }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -