本文所述实例可以实现Java在界面上动态的显示时间。具体实现方法汇总如下:
1.方法一 用TimerTask:
利用java.util.Timer和java.util.TimerTask来做动态更新,毕竟每次更新可以看作是计时1秒发生一次。
代码如下:
?
继承TimerTask来创建一个自定义的task,获取当前时间,更新displayArea.
然后创建一个timer的实例,每1秒执行一次timertask。由于用schedule可能会有时间误差产生,所以直接调用精度更高的scheduleAtFixedRate的。
2. 方法二:利用线程:
这个就比较简单了。具体代码如下:
?
比较:
个人倾向于方法一,因为Timer是可以被多个TimerTask共用,而产生一个线程,会增加多线程的维护复杂度。
注意如下代码:
?
将上面方法一稍微一修改,就可以显示多国时间。代码如下:
?
本来需要在updateTimeZone(TimeZone newZone)中,更新displayArea的。但是考虑到TimerTask执行的时间太短,才1秒钟,以肉眼观察,基本上是和立刻更新没区别。如果TimerTask执行时间长的话,这里就要立刻重新用心的时间更新一下displayArea。
补充:
①. pack() 用来自动计算屏幕大小;
②. TimeZone.getAvailableIDs() 用来获取所有的TimeZone。