About"Timer" & "Calendar"
这个星期做了一个简单的计时器,这个计时器可以获得当前的系统时间,并计时。
?
主要用到了java.util.Calendar 和 java.util.Timer 这两个类,这两个类非常实用,计时器这个程序也可以应用的很广,比如很多游戏需要计时(扫雷),测试也需要计时。
?
第一个类代码如下:
?
?
?
这个类中,对于我来说比较难想到的是 increment()这个方法,value = (value + 1) % limit; 能够很好的利用limit(区间)去判断时间是否需要进为0。
?
另外一个类:
?
?
这个类中运用了Calendar的对象rightNow来获得当前系统时间。
?
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。?
与其他语言环境敏感类一样,
Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();?
?
还有最后一个gui的类:
?
?
与系统时间:
?是一致的。
?
但在初期,Start的actionPerformed()中如果不对time进行判断,会造成连续点击Start计时加速的问题,而且不能通过点击相同次数的Stop来停止。
?
利用JButton的setEnabled(boolean?b)来对Start,Stop的点击进行限制而避免此问题,或者:如我的代码中一样,通过if的判断来保证只有一个time在执行任务(这不是singleton)。
?
?
