JFrame时间输出、计时器

利用JFrame实现时间输出和计时器功能,输出当前时间XXXX年XX月XX日  xx时xx分xx秒。秒表,可以开始计时,暂停,继续计时和清零的功能。功能虽然简单,但挺好玩的。做的时候没有加入大量其他的设计让外观变的好看,感兴趣的还可以往上面加其他功能。

这个大概是半年前弄的小玩意,当时没有接触到博客,最近在整理代码时无意间发现,觉得挺有意思的,拿出来给自己总结一下。

唯一碰到的坑就是这两个东西分开时都能正常,当合并在一起时,线程之间会发生冲突,时间错乱,当时想了很久没有想到,后来真正接触到了守护线程,内部类的时候,定义了守护线程,定义了内部类,将冲突的线程给分离开,最终实现了

效果图如下

先说说思路,两个lable,一个显示当前时间,一个显示开始计时的时间。一共两个按钮,开始和清零,给这两个按钮设置监听器,并且设置一个状态,状态默认是暂停的,在开始按钮的监听事件中判断。当为true时按钮显示为继续,当点击后状态改变为false,按钮显示为暂停。调用对应的线程处理不同的事情。

主要讲那个设置的状态理解透那就不难了,定义一个stopped状态

<strong>//计时器初始状态是暂停的
	 private long pauseStart=progranStart;</strong>

是否开始或者继续计时都是由该状态决定,进入计时器线程后,状态值设置为true。当进入到监听器时,判断状态值,为true则开始计时,每毫秒刷新一次,并将状态改变为false,按钮显示为暂停,当点击暂停时,状态变成true,计时停止,按钮变成继续。这里比较容易混乱建议拿着代码多敲几遍理解一下。

清零按钮的监听器事件设置,就是将lable中的初始值00:00:00 000还原,将状态变成true。

而时间显示线程写成外部类,避免与时间计时线程相冲突。再有线程去调用,每秒刷新一次。

代码里面都有注释

代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值