Demo1
clock
import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.*; import java.util.Calendar; import java.util.GregorianCalendar; 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("Clock by kikiwawa"); setDefaultCloseOperation(3); setSize(300, 300); // setBackground(Color.BLACK); setLocation(300, 150); //窗体大小 setResizable(false); //设置不可缩放 setVisible(true); int delay = 1000; // 窗口刷新频率 ActionListener drawClock = new ActionListener() { public void actionPerformed(ActionEvent evt) { repaint(); } }; new Timer(delay, drawClock).start(); } public void actionPerformed(ActionEvent e) { } 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; // // 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 * 6; // hh = 90 - nowh * 30 - nowm / 2; // x0 = r + 40 + L; // y0 = r + 40 + T; // // if (olds_x > 0) { // g.setColor(getBackground()); // g.drawLine(x0, y0, olds_x, h - olds_y); // } else { // old_m = mm; // old_h = hh; // } // x = (int) (r * 0.9 * Math.cos(RAD * ss)) + x0; // y = (int) (r * 0.9 * Math.sin(RAD * ss)) + y0 - 2 * T; // g.setColor(Color.yellow); // g.drawLine(x0, y0, x, h - y); // olds_x = x; // olds_y = y; // g2D.setStroke(new BasicStroke(2.2f)); // // if (old_m != mm) { // g.setColor(getBackground()); // g.drawLine(x0, y0, oldm_x, h - oldm_y); // } // // x = (int) (r * 0.7 * Math.cos(RAD * mm)) + x0; // y = (int) (r * 0.7 * Math.sin(RAD * mm)) + y0 - 2 * T; // g.setColor(Color.green); // g.drawLine(x0, y0, x, h - y); // oldm_x = x; // oldm_y = y; // old_m = mm; // g2D.setStroke(new BasicStroke(3.4f)); // // if (old_h != hh) { // g.setColor(getBackground()); // g.drawLine(x0, y0, oldh_x, h - oldh_y); // } // // x = (int) (r * 0.5 * Math.cos(RAD * hh)) + x0; // y = (int) (r * 0.5 * Math.sin(RAD * hh)) + y0 - 2 * T; // g.setColor(Color.red); // g.drawLine(x0, y0, x, h - y); // oldh_x = x; // oldh_y = y; // old_h = hh; } public static void main(String[] args) { Clock c = new Clock(); } }
clockDemo
package clockdemo; import java.util.*; import java.applet.*; import java.awt.*; import java.text.*; public class ClockDemo extends Applet implements Runnable { Thread timer; int lastxs, lastys, lastxm, lastym, lastxh, lastyh; SimpleDateFormat fm; String lastdate; Font clockFaceFont; Date currentDate; Color handColor; Color numberColor; public void init() { int x, y; lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0; fm = new SimpleDateFormat("yyyy EEE MMM dd hh:mm:ss"); currentDate = new Date(); lastdate = fm.format(currentDate); clockFaceFont = new Font("Serif", Font.PLAIN, 14); handColor = Color.blue; numberColor = Color.darkGray; try { setBackground(new Color(Integer.parseInt(getParameter("bgcolor"), 16))); } catch (Exception E) { } try { handColor = new Color(Integer.parseInt(getParameter("fgcolor1"), 16)); } catch (Exception E) { } try { numberColor = new Color(Integer.parseInt(getParameter("fgcolor1"), 16)); } catch (Exception E) { } resize(200, 200); } public void plotpoints(int x0, int y0, int x, int y, Graphics g) { g.drawLine(x0 + x, y0 + y, x0 + x, y0 + y); g.drawLine(x0 + y, y0 + x, x0 + y, y0 + x); g.drawLine(x0 + y, y0 - x, x0 + y, y0 - x); g.drawLine(x0 + x, y0 - y, x0 + x, y0 - y); g.drawLine(x0 - x, y0 - y, x0 - x, y0 - y); g.drawLine(x0 - y, y0 - x, x0 - y, y0 - x); g.drawLine(x0 - y, y0 + x, x0 - y, y0 + x); g.drawLine(x0 - x, y0 + y, x0 - x, y0 + y); } public void circle(int x0, int y0, int r, Graphics g) { int x, y; float d; x = 0; y = r; d = 5 / 4 - r; plotpoints(x0, y0, x, y, g); while (y > x) { if (d < 0) { d = d + 2 * x + 3; x++; } else { d = d + 2 * (x - y) + 5; x++; y--; } plotpoints(x0, y0, x, y, g); } } public void paint(Graphics g) { int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter; String today; currentDate = new Date(); SimpleDateFormat fm = new SimpleDateFormat("s", Locale.getDefault()); try { s = Integer.parseInt(fm.format(currentDate)); } catch (NumberFormatException n) { s = 0; } fm.applyPattern("m"); try { m = Integer.parseInt(fm.format(currentDate)); } catch (NumberFormatException n) { m = 10; } fm.applyPattern("h"); try { h = Integer.parseInt(fm.format(currentDate)); } catch (NumberFormatException n) { h = 10; } fm.applyPattern("EEE MMM dd HH:mm:ss yyyy"); today = fm.format(currentDate); xcenter = 80; ycenter = 55; xs = (int) (Math.cos(s * 3.14f / 30 - 3.14 / 2) * 45 + xcenter); ys = (int) (Math.sin(s * 3.14f / 30 - 3.14 / 2) * 45 + ycenter); xm = (int) (Math.cos(m * 3.14f / 30 - 3.14 / 2) * 40 + xcenter); ym = (int) (Math.sin(m * 3.14f / 30 - 3.14 / 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(clockFaceFont); g.setColor(handColor); circle(xcenter, ycenter, 50, g); g.setColor(numberColor); 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(lastdate, 5, 125); } 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(numberColor); g.drawString("", 5, 125); g.drawString(today, 5, 125); g.drawLine(xcenter, ycenter, xs, ys); g.setColor(handColor); g.drawLine(xcenter, ycenter - 1, xm, ym); g.drawLine(xcenter, 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; lastdate = today; currentDate = null; } public void start() { timer = new Thread(this); timer.start(); } public void stop() { timer = null; } public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { Thread.currentThread().sleep(1000); } catch (InterruptedException e) { } repaint(); } } public void update(Graphics g) { paint(g); } }