关闭

java ----- clock & clockdemo

568人阅读 评论(0) 收藏 举报
分类:

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();
	}
}

Demo2

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);
	}
}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:782422次
    • 积分:12493
    • 等级:
    • 排名:第1257名
    • 原创:420篇
    • 转载:267篇
    • 译文:0篇
    • 评论:37条
    文章分类
    最新评论