计时器

//TestStopWatch.java package myprojects.teststopwatch; import java.awt.*; import java.awt.event.*; class TestStopWatch extends Frame { public TestStopWatch() { this.add(new StopWatch()); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); } public static void main(String args[]) { System.out.println("Starting TestStopWatch..."); TestStopWatch mainFrame = new TestStopWatch(); mainFrame.setSize(400, 400); mainFrame.setTitle("TestStopWatch"); mainFrame.setVisible(true); } }

//StopWatch.java package myprojects.teststopwatch; import java.text.SimpleDateFormat; import java.util.Date; import java.awt.*; import java.awt.event.*; public class StopWatch extends Canvas implements Runnable { //StopWatch继承了Canvas组件类 //实现Runnable接口,实现实时刷新 long startTime=0; //鼠标按下时的时间 long endTime=0; //鼠标松开时的时间 boolean bStart=false; public StopWatch(){ enableEvents(AWTEvent.MOUSE_EVENT_MASK); } protected void processMouseEvent(MouseEvent e){ if(e.getID()==MouseEvent.MOUSE_PRESSED){ bStart=true; new Thread(this).start(); //启动 重绘刷 新线程 startTime=endTime=System.currentTimeMillis(); //获取按下鼠标时的当前时间 repaint(); //按下鼠标时重绘组件,实现计时器归零 } else if(e.getID()==MouseEvent.MOUSE_RELEASED){ endTime=System.currentTimeMillis(); //获取放开鼠标时的当前时间 repaint(); //并且重绘组件 bStart=false; } } public void paint(Graphics g){ //覆盖Component类的paint()方法 SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");//注意HH:mm:ss几个字母的大小写 Date elapsedTime=null; //定义鼠标按下和松开之间的时间差 try{ elapsedTime=sdf.parse("00:00:00");//设置elapsedTime初始值为00:00:00,编译时提示可能出现异常,要try一下 } catch(Exception e){ e.printStackTrace(); } elapsedTime.setTime(elapsedTime.getTime()+endTime-startTime); String strTime=sdf.format(elapsedTime); //时间差elapsedTime格式化后的字符串就是要在计时器上显示的内容 g.fill3DRect(0,0,78,28,true); //设置背景 g.setColor(Color.WHITE); //设置字体颜色 g.drawString(strTime,10,20); //绘制字符串 } public void run() { // TODO: Add your code here while(bStart){ //循环刷新 try{ Thread.sleep(500); //500毫秒刷新一次 } catch(Exception e){ e.printStackTrace(); } endTime=System.currentTimeMillis(); repaint(); } } }

Java.Canvas相关推荐

  1. java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片

    [Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...

  2. java canvas 画圆_java – 如何在Android中通过canvas绘制圆?

    我想画画圆.这里是我的代码: [MyActivity.java]: public class MyActivity extends Activity { public void onCreate(Bu ...

  3. java canvas 动态画图_canvas前端动图如何实现

    展开全部 Canvas是HTML5中的重要组成部62616964757a686964616fe59b9ee7ad9431333366306464分,用于绘制简单的图形,定义路径,创建渐变及应用图像变换 ...

  4. java canvas 动画效果_八大疯狂HTML5 Canvas及WebGL动画效果

    [IT168应用]HTML5.WebGL和JavaScript改变了长久以来的动画制作行业.在过去的几年中,我们想要制作卓越的网页动画只能使用Flash和Java Applet.而现在,使用脚本语言和 ...

  5. java canvas添加图片上传_HTML5 canvas画图及图片上传服务器

    上一个教程中我们实现了使用html5 canvas来制作涂鸦画板的效果,在这个教程中,我们将讲解如何将画好的图片上传到服务器上. 最后的效果如下图,当点击"开始画图"按钮,将在ca ...

  6. java canvas详解_HTML5的canvas绘图技术详解

    原标题:HTML5的canvas绘图技术详解 本篇教程探讨了HTML5的canvas绘图技术详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < canvas ...

  7. java Canvas画图学习小结

    主函数 package paint;import javax.swing.JFrame;public class PaintMain {JFrame jFrame;public static void ...

  8. java canvas画图,UWP Canvas绘图越界

    我有一个画布(不是InkCanvas!),我可以在上面绘制Polylines . 这工作得很好,但是如下面的GIF所示,绘制出界限存在一个巨大的问题 . 我的画布在ScrollViewer中,Scro ...

  9. java canvas画圆圈_java – 在视图上绘制一个圆圈(android)

    几点意见: 在确定圆的中心点和半径时,您需要考虑分配给视图的宽度和高度. 您应该考虑分配给视图的填充,这样就不会绘制该保留部分. 你应该避免在onDraw方法中分配对象,因为这会被调用很多. 为了允许 ...

最新文章

  1. 通过迭代在DataFrame中取出满足某种条件的列,函数 —— .columns
  2. 基于笛卡尔坐标系下的三边定位的研究(TOA方式定位)
  3. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)
  4. python socket udp_python网络-Socket之udp编程(24)
  5. 短小精悍-机器学习核心概念、模型、基础知识点简明手册-免费分享
  6. C#中的主从Datagridview
  7. 【报告分享】未来教育的技术空间研究报告.pdf(附下载链接)
  8. sours insight 使用技巧
  9. 3月7日学习内容整理:restframework的解析器组件
  10. HTML5缓存之 WebStorage
  11. pdf 编辑器 linux
  12. 深度学习CNN算法原理
  13. C语言面试题---数组
  14. 【1031】场景的「唤起点」和「临场感」
  15. 红帽linux员工数,红帽企业 Linux Atomic Host 管理
  16. Check It Again: Progressive Visual Question Answering via Visual Entailment
  17. 第五章 数据链路层与局域网
  18. 02 FinalReference.referent的回收时机
  19. 学习UI设计需要学习哪些软件?
  20. socket编程之 accept函数的理解

热门文章

  1. 怎么修改我的世界服务器封面,《我的世界:初识服务器》
  2. Failed to process package ‘cartographer_ros‘ :
  3. 开发者应用盈利最佳渠道-KeyMob移动广告聚合平台
  4. 核心期刊《中国老年学杂志》期刊简介及投稿要求
  5. AI动物识别专家系统-实验报告
  6. 二叉树交换左右子树的递归与非递归算法
  7. Ubuntu升级glibc库
  8. EtherCat主站与从站简介
  9. VMware新建虚拟机在按照过程图形化鼠标点击不了,
  10. pytorch官方文档(中文版)