java ----- clock & clockdemo

来源:互联网 发布:java for循环 小数点 编辑:程序博客网 时间:2024/06/05 06:29

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;elsest = "" + nowh;if (nowm < 10)st += ":0" + nowm;elsest += ":" + nowm;if (nows < 10)st += ":0" + nows;elsest += ":" + 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);}}




原创粉丝点击