Java实现的计时器【秒表】功能示例

2025-05-29 0 17

本文实例讲述了java实现的计时器秒表】功能。分享给大家供大家参考,具体如下:

应用名称:java计时器

用到的知识:java gui编程

开发环境:win8+eclipse+jdk1.8

功能说明:计时功能,精确到1毫秒,可暂停。

效果图:

Java实现的计时器【秒表】功能示例

源代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125
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.zzvips.com 计时器");

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:这里再为大家推荐几款时间及日期相关工具供大家参考使用:

unix时间戳(timestamp)转换工具:https://tool.zzvips.com/t/timestamp/

在线秒表计时器https://tool.zzvips.com/t/miaobiao/

希望本文所述对大家java程序设计有所帮助。

原文链接:https://blog.csdn.net/C_jian/article/details/50506759

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java实现的计时器【秒表】功能示例 https://www.kuaiidc.com/109552.html

相关文章

发表评论
暂无评论