Java内嵌秒表_【Java】Java计时器(秒表)(示例代码)
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计时器(秒表)(示例代码)相关推荐
- java 内嵌机制_[转] Java中public,private,final,static等概念的解读
作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...
- java星座查询系统_星座运势查询示例代码
package api.jisuapi.astro; import api.util.HttpUtil; import net.sf.json.JSONObject; public class For ...
- java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable
线程 1 线程概述 1.1 什么是线程 v 线程是程序执行的一条路径, 一个进程中可以包含多条线程 v 一个应用程序可以理解成就是一个进程 v 多线程并发执行可以提高程序的效率, 可以同时完成多 ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...
java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...
- java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举
java 枚举内嵌枚举 几年前,我发表了博客文章" The Highly有用的Java TimeUnit Enum ",其中介绍了JDK 5引入的TimeUnit枚举. JDK 8 ...
- java 内嵌调用_Java高级开发必会的50个性能优化的细节(珍藏版)
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能. ● 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载 ...
- WPS内嵌图片怎样使用Java获取图片?
wps表格中,将图片如图设置为内嵌图片格式时,Java后端的POI无法读取图片,有其他的解决办法吗?(图片设置为浮动图片时可正常读取)
- java内嵌数据库_Java嵌入式数据库-MapDB
MapDB可以直接将Java的数据类型存储至直接内存而非JVM的堆中,也可以将数据持久化到磁盘. 与文无关 今天和大家介绍一个Java的第三方库,MapDB,它是用Kotlin写的,据说代码质量还不错 ...
- swt java 内嵌ActiveX控件
这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...
最新文章
- Kubernetes-基于EFK进行统一的日志管理
- 通过公历年计算天干地支
- java 泛型 extends 多个
- 【guava】guava 11.0.2 版本 key 肯能丢数据的bug
- LeetCode(867)——转置矩阵(JavaScript)
- 怎么获取当前页面的URL
- Java设计模式总结
- Redis集群原理和总结
- 世嘉MD游戏开发【十一】:背景卷轴滚动(视差滚动)Parallax Scroll和摄像机
- 计算机表格 求差,Word怎么在表格中计算差
- vue 项目使用Standardjs进行语法错误检测和修复
- 海南旅游自由行攻略怎么玩
- 【富文本】3如何制作U盘系统盘
- 解决网页文字无法复制
- CorelDRAW X7入门到精通视频教程 广告 名片 相册 包装设计
- Android Google地图接入(二)
- 联想计算机组装,联想主板跳线图解(新手电脑组装教程)
- ALLyeSNO优化版浩方 Ver:2007.06.13 呵呵今天整合出来的
- 2021-10-26尤破金10.27外汇黄金白银实时操作策略布局
- 华擎、映泰主板的网络唤醒(WOL)实例