首页 > 试题

timeframe

更新时间:2022-11-13 18:22:45 阅读: 评论:0

蒙题口诀表-什么的气氛


2022年11月13日发(作者:周末愉快最简单一句话)

Java中如何实现显示动态的时间

Java中如何实现显示动态的时间

本文所述实例可以实现Java在界面上动态的显示时间。具体实现

方法汇总如下:

1.方法一用TimerTask:

利用和ask来做动态更新,毕竟

每次更新可以看作是计时1秒发生一次。

代码如下:

ion;import

DateFormat;ar;import

;;import

ask;;import

;;/***Thisclassisa

simpleJFrameimplementationtoexplainhowto*displaytime

dynamicallyontheJSwing-badinterface.*@authorEdison*

*/publicclassTimeFrameextendsJFrame{/**Variables*/private

JPaneltimePanel;privateJLabeltimeLabel;privateJLabel

displayArea;privateStringDEFAULT_TIME_FORMAT=

"HH:mm:ss";privateStringtime;privateintONE_SECOND=1000;

publicTimeFrame(){timePanel=newJPanel();timeLabel=new

JLabel("CurrentTime:");displayArea=newJLabel();

configTimeArea();(timeLabel);

(displayArea);(timePanel);

aultCloOperation(EXIT_ON_CLOSE);e(new

Dimension(200,70));ationRelativeTo(null);}/***This

methodcreatesatimertasktothetimepercond*/private

voidconfigTimeArea(){Timertmr=newTimer();

leAtFixedRate(newJLabelTimerTask(),newDate(),

ONE_SECOND);}/***Timertasktothetimedisplayarea**/

protectedclassJLabelTimerTaskextends

TimerTask{SimpleDateFormatdateFormatter=new

SimpleDateFormat(DEFAULT_TIME_FORMAT);@Overridepublic

voidrun(){time=

(tance().getTime());

t(time);}}publicstaticvoidmain(Stringarg[])

{TimeFrametimeFrame=newTimeFrame();

ible(true);}}

继承TimerTask来创建一个自定义的.task,获取当前时间,更新

displayArea.

然后创建一个timer的实例,每1秒执行一次timertask。由于用

schedule可能会有时间误差产生,所以直接调用精度更高的

scheduleAtFixedRate的。

2.方法二:利用线程:

这个就比较简单了。具体代码如下:

ion;import

DateFormat;ar;import

;;import

;/***ThisclassisasimpleJFrame

implementationtoexplainhowto*displaytimedynamicallyon

theJSwing-badinterface.*@authorEdison**/publicclass

DTimeFrame2extendsJFrameimplementsRunnable{private

JFrameframe;privateJPaneltimePanel;privateJLabeltimeLabel;

privateJLabeldisplayArea;privateString

DEFAULT_TIME_FORMAT="HH:mm:ss";privateint

ONE_SECOND=1000;publicDTimeFrame2(){timePanel=new

JPanel();timeLabel=newJLabel("CurrentTime:");displayArea=

newJLabel();(timeLabel);

(displayArea);(timePanel);

aultCloOperation(EXIT_ON_CLOSE);e(new

Dimension(200,70));ationRelativeTo(null);}publicvoid

run(){while(true){SimpleDateFormatdateFormatter=new

SimpleDateFormat(DEFAULT_TIME_FORMAT);

t((tance(

).getTime()));try{(ONE_SECOND);}catch(Exception

e){t("Error");}}}publicstaticvoid

main(Stringarg[]){DTimeFrame2df2=newDTimeFrame2();

ible(true);Threadthread1=newThread(df2);

();}}

比较:

个人倾向于方法一,因为Timer是可以被多个TimerTask共用,

而产生一个线程,会增加多线程的维护复杂度。

注意如下代码:

aultCloOperation();//给关闭按钮增加特定行

为ationRelativeTo(null);//让Frame一出来就在屏幕

中间,而不是左上方。

将上面方法一稍微一修改,就可以显示多国时间。代码如下:

Layout;import

Event;import

Listener;import

DateFormat;ar;import

;;import

ne;;import

ask;import

tComboBoxModel;import

Box;;import

;;/***Asimpleworld

clock*@authorEdison**/publicclassWorldTimeFrameextends

JFrame{/****/privatestaticfinallongrialVersionUID=

4782486524987801209L;privateStringtime;privateJPanel

timePanel;privateTimeZonetimeZone;privateJComboBox

zoneBox;privateJLabeldisplayArea;privateintONE_SECOND=

1000;privateStringDEFAULT_FORMAT="EEEdMMM,

HH:mm:ss";publicWorldTimeFrame(){zoneBox=new

JComboBox();timePanel=newJPanel();displayArea=new

JLabel();timeZone=ault();

el(new

DefaultComboBoxModel(ilableIDs()));

ionListener(newActionListener(){@Override

publicvoidactionPerformed(ActionEvente)

{updateTimeZone(eZone((String)

ectedItem()));}});configTimeArea();

(displayArea);out(newBorderLayout());

(zoneBox,);(timePanel,

);ationRelativeTo(null);

aultCloOperation(EXIT_ON_CLOSE);

ible(true);pack();}/***Thismethodcreatesatimer

tasktothetimepercond*/privatevoidconfigTimeArea()

{Timertmr=newTimer();leAtFixedRate(new

JLabelTimerTask(),newDate(),ONE_SECOND);}/***Timertask

tothetimedisplayarea**/publicclassJLabelTimerTaskextends

TimerTask{SimpleDateFormatdateFormatter=new

SimpleDateFormat(DEFAULT_FORMAT,H);

@Overridepublicvoidrun()

{eZone(timeZone);time=

(tance().getTime());

t(time);}}/***UpdatethetimeZone*

@paramnewZone*/publicvoidupdateTimeZone(TimeZone

newZone){ne=newZone;}publicstaticvoid

main(Stringarg[]){newWorldTimeFrame();}}

本来需要在updateTimeZone(TimeZonenewZone)中,更新

displayArea的。但是考虑到TimerTask执行的时间太短,才1秒钟,

以肉眼观察,基本上是和立刻更新没区别。如果TimerTask执行时间

长的话,这里就要立刻重新用心的时间更新一下displayArea。

补充:

①.pack()用来自动计算屏幕大小;

②.ilableIDs()用来获取所有的TimeZone。

【Java中如何实现显示动态的时间】

本文发布于:2022-11-13 18:22:45,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/12568.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:begin现在分词
下一篇:碳酸氢钠分解
标签:timeframe
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图