import javax.swing.*;importjava.awt.HeadlessException;importjava.awt.BorderLayout;importjava.awt.FlowLayout;importjava.awt.Font;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;/*** 计时器*/

public class Timer extendsJFrame {/****/

private static final long serialVersionUID = 1L;private static final String INITIAL_LABEL_TEXT = "00:00:00 000";//计数线程

private CountingThread thread = newCountingThread();//记录程序开始时间

private long programStart =System.currentTimeMillis();//程序一开始就是暂停的

private long pauseStart =programStart;//程序暂停的总时间

private long pauseCount = 0;private JLabel label = newJLabel(INITIAL_LABEL_TEXT);private JButton startPauseButton = new JButton("开始");private JButton resetButton = new JButton("清零");private ActionListener startPauseButtonListener = newActionListener() {public voidactionPerformed(ActionEvent e) {if(thread.stopped) {

pauseCount+= (System.currentTimeMillis() -pauseStart);

thread.stopped= false;

startPauseButton.setText("暂停");

}else{

pauseStart=System.currentTimeMillis();

thread.stopped= true;

startPauseButton.setText("继续");

}

}

};private ActionListener resetButtonListener = newActionListener() {public voidactionPerformed(ActionEvent e) {

pauseStart=programStart;

pauseCount= 0;

thread.stopped= true;

label.setText(INITIAL_LABEL_TEXT);

startPauseButton.setText("开始");

}

};public Timer(String title) throwsHeadlessException {super(title);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocation(300, 300);

setResizable(false);

setupBorder();

setupLabel();

setupButtonsPanel();

startPauseButton.addActionListener(startPauseButtonListener);

resetButton.addActionListener(resetButtonListener);

thread.start();//计数线程一直就运行着

}//为窗体面板添加边框

private voidsetupBorder() {

JPanel contentPane= new JPanel(newBorderLayout());

contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));this.setContentPane(contentPane);

}//配置按钮

private voidsetupButtonsPanel() {

JPanel panel= new JPanel(newFlowLayout());

panel.add(startPauseButton);

panel.add(resetButton);

add(panel, BorderLayout.SOUTH);

}//配置标签

private voidsetupLabel() {

label.setHorizontalAlignment(SwingConstants.CENTER);

label.setFont(new Font(label.getFont().getName(), label.getFont().getStyle(), 40));this.add(label, BorderLayout.CENTER);

}//程序入口

public static voidmain(String[] args) {try{

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

}catch(Exception e) {

e.printStackTrace();

}

Timer frame= new Timer("计时器");

frame.pack();

frame.setVisible(true);

}private class CountingThread extendsThread {public boolean stopped = true;privateCountingThread() {

setDaemon(true);

}

@Overridepublic voidrun() {while (true) {if (!stopped) {long elapsed = System.currentTimeMillis() - programStart -pauseCount;

label.setText(format(elapsed));

}try{

sleep(1); //1毫秒更新一次显示

} catch(InterruptedException e) {

e.printStackTrace();

System.exit(1);

}

}

}//将毫秒数格式化

private String format(longelapsed) {inthour, minute, second, milli;

milli= (int) (elapsed % 1000);

elapsed= elapsed / 1000;

second= (int) (elapsed % 60);

elapsed= elapsed / 60;

minute= (int) (elapsed % 60);

elapsed= elapsed / 60;

hour= (int) (elapsed % 60);return String.format("%02d:%02d:%02d %03d", hour, minute, second, milli);

}

}

}

Java内嵌秒表_【Java】Java计时器(秒表)(示例代码)相关推荐

  1. java 内嵌机制_[转] Java中public,private,final,static等概念的解读

    作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...

  2. java星座查询系统_星座运势查询示例代码

    package api.jisuapi.astro; import api.util.HttpUtil; import net.sf.json.JSONObject; public class For ...

  3. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

  4. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  5. java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...

    java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...

  6. java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举

    java 枚举内嵌枚举 几年前,我发表了博客文章" The Highly有用的Java TimeUnit Enum ",其中介绍了JDK 5引入的TimeUnit枚举. JDK 8 ...

  7. java 内嵌调用_Java高级开发必会的50个性能优化的细节(珍藏版)

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. ● 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载 ...

  8. WPS内嵌图片怎样使用Java获取图片?

    wps表格中,将图片如图设置为内嵌图片格式时,Java后端的POI无法读取图片,有其他的解决办法吗?(图片设置为浮动图片时可正常读取)

  9. java内嵌数据库_Java嵌入式数据库-MapDB

    MapDB可以直接将Java的数据类型存储至直接内存而非JVM的堆中,也可以将数据持久化到磁盘. 与文无关 今天和大家介绍一个Java的第三方库,MapDB,它是用Kotlin写的,据说代码质量还不错 ...

  10. swt java 内嵌ActiveX控件

    这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...

最新文章

  1. Kubernetes-基于EFK进行统一的日志管理
  2. 通过公历年计算天干地支
  3. java 泛型 extends 多个
  4. 【guava】guava 11.0.2 版本 key 肯能丢数据的bug
  5. LeetCode(867)——转置矩阵(JavaScript)
  6. 怎么获取当前页面的URL
  7. Java设计模式总结
  8. Redis集群原理和总结
  9. 世嘉MD游戏开发【十一】:背景卷轴滚动(视差滚动)Parallax Scroll和摄像机
  10. 计算机表格 求差,Word怎么在表格中计算差
  11. vue 项目使用Standardjs进行语法错误检测和修复
  12. 海南旅游自由行攻略怎么玩
  13. 【富文本】3如何制作U盘系统盘
  14. 解决网页文字无法复制
  15. CorelDRAW X7入门到精通视频教程 广告 名片 相册 包装设计
  16. Android Google地图接入(二)
  17. 联想计算机组装,联想主板跳线图解(新手电脑组装教程)
  18. ALLyeSNO优化版浩方 Ver:2007.06.13 呵呵今天整合出来的
  19. 2021-10-26尤破金10.27外汇黄金白银实时操作策略布局
  20. 华擎、映泰主板的网络唤醒(WOL)实例

热门文章

  1. 整数的素因数权重分析
  2. pip 通过pqi切换源到国内镜像
  3. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
  4. oracle 存储过程循环打开游标数据处理
  5. iOS中的中间人-NSURLProtocol 的原理和使用实例
  6. 计算1到100的整数和
  7. Dialog 基本使用
  8. 一个自动化测试的案例之记事狗微博篇
  9. 博客园的祥和需要大家共同努力
  10. jsp 中select 下拉选择框 el 三元运算符 如何选中与不选中