Canvas类:
1: import java.awt.Frame;
2: import java.awt.event.WindowAdapter;
3: import java.awt.event.WindowEvent;
4:
5: import java.awt.AWTEvent;
6: import java.awt.Canvas;
7: import java.awt.Color;
8: import java.awt.Graphics;
9: import java.awt.event.MouseEvent;
10: import java.text.ParseException;
11: import java.text.SimpleDateFormat;
12: import java.util.Date;
13:
14: class StopWatch extends Canvas implements Runnable {
15: private long startTime = 0;
16: private long endTime = 0;
17: private boolean bStart = false;
18:
19: public StopWatch() {
20: enableEvents(AWTEvent.MOUSE_EVENT_MASK);
21: setSize(80, 30);
22: }
23:
24: protected void processMouseEvent(MouseEvent e) {
25: if (e.getID() == MouseEvent.MOUSE_PRESSED) {
26: bStart = true;
27: startTime = endTime = System.currentTimeMillis();
28: repaint();
29: new Thread(this).start();
30: } else if (e.getID() == MouseEvent.MOUSE_RELEASED) {
31: bStart = false;
32: repaint();
33: }
34: }
35:
36: @Override
37: public void paint(Graphics g) {
38: super.paint(g);
39: // 时间值的小时,分,秒用两位数字显示,不足两位的部分前面加0,即 "HH:mm:ss"
40: SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
41: Date elapsedTime = null;
42: try {
43: elapsedTime = sdf.parse("00:00:00");
44: } catch (ParseException e) {
45: e.printStackTrace();
46: }
47: // elapsedTime.setTime(endTime - startTime)不是"00:00:00" 而是"08:00:00"
48: elapsedTime.setTime(endTime - startTime + elapsedTime.getTime());
49: String display = sdf.format(elapsedTime);
50: g.drawRect(0, 0, 78, 28);
51: g.fill3DRect(2, 2, 75, 25, true);
52: g.setColor(Color.red);
53: g.drawString(display, 10, 20);
54: }
55:
56: @Override
57: public void run() {
58: while (bStart) {
59: try {
60: Thread.sleep(500);
61: } catch (InterruptedException e) {
62: e.printStackTrace();
63: }
64: endTime = System.currentTimeMillis();
65: repaint();
66: }
67: }
68:
69: }
Main类(程序入口):
1: public class TestStopWatch {
2: public static void main(String[] args) {
3: Frame f = new Frame("StopWatch");
4: f.add(new StopWatch());
5: f.setSize(200, 200);
6: f.setVisible(true);
7: f.addWindowListener(new WindowAdapter() {
8:
9: @Override
10: public void windowClosing(WindowEvent e) {
11: super.windowClosing(e);
12: System.exit(0);
13: }
14: });
15: }
16: }
分享到:
相关推荐
J2SE桌面应用开发 J2SE桌面应用开发J2SE桌面应用开发 J2SE桌面应用开发 J2SE桌面应用开发
学J2SE时做得一个人事管理系统的项目,现在把原工程上传,供大家参考。用的oracle哦
(J2SE平台Java程序设计)阶段测试题,(J2SE平台Java程序设计)阶段测试题,(J2SE平台Java程序设计)阶段测试题,(J2SE平台Java程序设计)阶段测试题
J2SE中表格应用,一个JTable的例子。
j2se的特征:如Applet和servlet的区别;多线程,重载,多态,扩展类,抽象类,接口问题,静态绑定与动态的区别等等
[J2SE]应用编程150例 [J2SE]应用编程150例 [J2SE]应用编程150例
j2se-js J2SE框架JavaScript移植 设置项目 笔记 贡献者 尼古拉 约瑟夫 西乔 卡洛塔 弗朗西斯(Francis) 吉吉 瓦列里奥 松树 马里奥 帕沙尔(Paschal)
J2SE]应用编程150例 J2SE]应用编程150例 J2SE]应用编程150例
基于J2SE数字图像处理设计及报告 doc
java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏java课程设计大作业——用J2SE写的一个坦克大战小游戏...
J2SE进阶:TP312JA J41.iso 随书光盘,欢迎大家下载 大家共享^A^
J2SE-示例一些核心 Java 代码示例=> 集合 => I/O => 多线程 => Swing => 套接字编程
J2SE_Test 用于测试的J2SE代码。
java学习总结1 -- j2se 项目环境: jdk8 字符集:UTF-8 开发工具:Eclipse 包括内容: basic 基本语法 oop 面向对象 api 常用api及工具类 javadoc javaDoc的使用 debug 代码调试方法 datastructure 基本数据结构 ...
[J2SE]应用编程150例 不错下下看吧
中文译名是J2SE参考大全(第5版) 这份是自己制作的电子书,现在还没有制作完成,因为内容太多,关打字就打个半死.
J2SE api开发文档。此文档对java程序员是不可或缺的。希望给需要的朋友带来帮助。
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API