java秒表计时器显示_Java实现的计时器【秒表】功能示例
摘要:这篇Java开发技术栏目下的“Java实现的计时器【秒表】功能示例”,介绍的技术点是“Java、计时器、计时、功能、实现、示例”,希望对大家开发技术学习和问题解决有帮助。
本文实例讲述了Java实现的计时器【秒表】功能。分享给大家供大家参考,具体如下:
应用名称:Java计时器
用到的知识:Java GUI编程
开发环境:win8+eclipse+jdk1.8
功能说明:计时功能,精确到1毫秒,可暂停。
效果图:
源代码:
import javax.swing.*;
import java.awt.HeadlessException;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
* 计时器
*/
public class Timer extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String INITIAL_LABEL_TEXT = "00:00:00 000";
// 计数线程
private CountingThread thread = new CountingThread();
// 记录程序开始时间
private long programStart = System.currentTimeMillis();
// 程序一开始就是暂停的
private long pauseStart = programStart;
// 程序暂停的总时间
private long pauseCount = 0;
private JLabel label = new JLabel(INITIAL_LABEL_TEXT);
private JButton startPauseButton = new JButton("开始");
private JButton resetButton = new JButton("清零");
private ActionListener startPauseButtonListener = new ActionListener() {
public void actionPerformed(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 = new ActionListener() {
public void actionPerformed(ActionEvent e) {
pauseStart = programStart;
pauseCount = 0;
thread.stopped = true;
label.setText(INITIAL_LABEL_TEXT);
startPauseButton.setText("开始");
}
};
public Timer(String title) throws HeadlessException {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(300, 300);
setResizable(false);
setupBorder();
setupLabel();
setupButtonsPanel();
startPauseButton.addActionListener(startPauseButtonListener);
resetButton.addActionListener(resetButtonListener);
thread.start(); // 计数线程一直就运行着
}
// 为窗体面板添加边框
private void setupBorder() {
JPanel contentPane = new JPanel(new BorderLayout());
contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
this.setContentPane(contentPane);
}
// 配置按钮
private void setupButtonsPanel() {
JPanel panel = new JPanel(new FlowLayout());
panel.add(startPauseButton);
panel.add(resetButton);
add(panel, BorderLayout.SOUTH);
}
// 配置标签
private void setupLabel() {
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setFont(new Font(label.getFont().getName(), label.getFont().getStyle(), 40));
this.add(label, BorderLayout.CENTER);
}
// 程序入口
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
Timer frame = new Timer("www.jb51.net 计时器");
frame.pack();
frame.setVisible(true);
}
private class CountingThread extends Thread {
public boolean stopped = true;
private CountingThread() {
setDaemon(true);
}
@Override
public void run() {
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(long elapsed) {
int hour, 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);
}
}
}
PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:
希望本文所述对大家java程序设计有所帮助。
java秒表计时器显示_Java实现的计时器【秒表】功能示例相关推荐
- java自定义迭代器作用_Java实现的自定义迭代器功能示例
本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...
- java对接微信分享_Java编程调用微信分享功能示例
本文实例讲述了Java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...
- JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解
一.类概述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 二.代码 ...
- java jpanel 分层显示_java – 向JPanel显示视频
我正在创建一个简单的视频播放器,但我有问题显示要在JPanel中流式传输的视频文件.我创建并设计了一个JFrame,并在表单中放置了一个方形大小的JPanel. 到目前为止,这是我的代码: packa ...
- java 图形立即显示_java 图形显示
importjavax.swing.*;importjava.awt.*;importjava.awt.Event.*;//从文本框中输入一个值.按回车键弹出对话框显示该输入值.publicclass ...
- java jpopupmenu 无法显示_JAVA :为什么使用Jpopupmenu()有参构造方法 不显示标题
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassExample10_23{publicstaticvoid ...
- java打印字符串显示_JAVA调用系统打印机打印字符串
用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出 ...
- java 串口 来电显示_java串口 来电显示
二.用rxtx.jar代替comm.jar # copy rxtxSerial.dll into your c:\program files\java\jre-version\bin dir # co ...
- java 按钮不显示_JAVA图形界面,按钮为什么显示不出来?
JAVA图形界面,按钮为什么显示不出来? 来源:互联网 宽屏版 评论 2009-10-22 02:51:03 分类: 电脑/网络 >> 软件 问题描述: import javax.sw ...
最新文章
- 5万字的《Java面试手册》V1.0版本,高清PDF免费获取
- (python)Graph_tools模块学习
- 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
- 我的一个学生在运维工作中写的自动日志清理脚本程序
- sql实现like多个值的查询
- c++歌手大赛系统_计人即讯|第十届程序设计大赛
- Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...
- RTX5 | 事件标志组01 - 创建事件标志组
- Golang 删除切片指定元素
- Nginx之开门见山
- 标准正态分布表(scipy.stats)
- uniapp内使用 mescroll
- java opencv 模板匹配算法_opencv 模板匹配
- 商家后台服务操作失败!服务上架失败【已上架过此类型插件】
- Django博客项目(一)—— 注册和登录页面
- 京东和天猫的运营模式的区别
- 三阶魔方大中小魔公式_三阶魔方花样大汇总 ,带公式带图
- 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
- [置顶] 关于Android图形系统的一些事实真相
- win10系统20H2版本更新以后桌面底下弹出了对话框,说我们在加载你的信息流时遇到了问题?
热门文章
- 神武3手游哪个跨平台服务器最多人,《神武3》手游一个门派要“霸占”一个服务器?...
- 怎样查看C盘根目录下全部隐藏文件
- aplay -l 列出声卡和数字音频设备
- XLnet和tranformer-XL的双流注意力机制
- 自己定义头像处理,轻巧有用,非常多强大的小技巧在里面哦,快来赞美我一下吧^_^...
- SIP:408、503错误
- Vue实战狗尾草博客管理系统第二章
- MacOS 微软办公套件 Microsoft Office
- 【渝粤教育】10180k2_统计基础_21秋考试
- 【Git】常用命令大全