摘要:这篇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实现的计时器【秒表】功能示例相关推荐

  1. java自定义迭代器作用_Java实现的自定义迭代器功能示例

    本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...

  2. java对接微信分享_Java编程调用微信分享功能示例

    本文实例讲述了Java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...

  3. JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解

    一.类概述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 二.代码 ...

  4. java jpanel 分层显示_java – 向JPanel显示视频

    我正在创建一个简单的视频播放器,但我有问题显示要在JPanel中流式传输的视频文件.我创建并设计了一个JFrame,并在表单中放置了一个方形大小的JPanel. 到目前为止,这是我的代码: packa ...

  5. java 图形立即显示_java 图形显示

    importjavax.swing.*;importjava.awt.*;importjava.awt.Event.*;//从文本框中输入一个值.按回车键弹出对话框显示该输入值.publicclass ...

  6. java jpopupmenu 无法显示_JAVA :为什么使用Jpopupmenu()有参构造方法 不显示标题

    importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassExample10_23{publicstaticvoid ...

  7. java打印字符串显示_JAVA调用系统打印机打印字符串

    用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出 ...

  8. java 串口 来电显示_java串口 来电显示

    二.用rxtx.jar代替comm.jar # copy rxtxSerial.dll into your c:\program files\java\jre-version\bin dir # co ...

  9. java 按钮不显示_JAVA图形界面,按钮为什么显示不出来?

    JAVA图形界面,按钮为什么显示不出来? 来源:互联网  宽屏版  评论 2009-10-22 02:51:03 分类: 电脑/网络 >> 软件 问题描述: import javax.sw ...

最新文章

  1. 5万字的《Java面试手册》V1.0版本,高清PDF免费获取
  2. (python)Graph_tools模块学习
  3. 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
  4. 我的一个学生在运维工作中写的自动日志清理脚本程序
  5. sql实现like多个值的查询
  6. c++歌手大赛系统_计人即讯|第十届程序设计大赛
  7. Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...
  8. RTX5 | 事件标志组01 - 创建事件标志组
  9. Golang 删除切片指定元素
  10. Nginx之开门见山
  11. 标准正态分布表(scipy.stats)
  12. uniapp内使用 mescroll
  13. java opencv 模板匹配算法_opencv 模板匹配
  14. 商家后台服务操作失败!服务上架失败【已上架过此类型插件】
  15. Django博客项目(一)—— 注册和登录页面
  16. 京东和天猫的运营模式的区别
  17. 三阶魔方大中小魔公式_三阶魔方花样大汇总 ,带公式带图
  18. 计算机中的随机存储器和只读存储器是什么,只读存储器和随机存储器的主要区别是什么...
  19. [置顶] 关于Android图形系统的一些事实真相
  20. win10系统20H2版本更新以后桌面底下弹出了对话框,说我们在加载你的信息流时遇到了问题?

热门文章

  1. 神武3手游哪个跨平台服务器最多人,《神武3》手游一个门派要“霸占”一个服务器?...
  2. 怎样查看C盘根目录下全部隐藏文件
  3. aplay -l 列出声卡和数字音频设备
  4. XLnet和tranformer-XL的双流注意力机制
  5. 自己定义头像处理,轻巧有用,非常多强大的小技巧在里面哦,快来赞美我一下吧^_^...
  6. SIP:408、503错误
  7. Vue实战狗尾草博客管理系统第二章
  8. MacOS 微软办公套件 Microsoft Office
  9. 【渝粤教育】10180k2_统计基础_21秋考试
  10. 【Git】常用命令大全