資源描述:
《張孝祥java就業(yè)指導(dǎo)原書代碼4第9章》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、張孝祥java就業(yè)指導(dǎo)原書代碼4第9章《Java就業(yè)培訓(xùn)教程》作者:張孝祥書中源碼《Java就業(yè)培訓(xùn)教程》P316源碼程序清單:TestStopWatch.javaimportjava.awt.*;importjava.awt.event.*;importjava.util.*;importjava.text.SimpleDateFormat;classStopWatchextendsCanvasimplementsRunnable{privatelongstartTime=0;privatelongendTime
2、=0;privatebooleanbStart=false;publicStopWatch(){enableEvents(AWTEvent.MOUSE_EVENT_MASK);setSize(80,30);}protectedvoidprocessMouseEvent(MouseEvente){if(e.getID()==MouseEvent.MOUSE_PRESSED){/*鼠標(biāo)按下時(shí),啟動(dòng)計(jì)時(shí)線程,并讓起始時(shí)間變量和終止時(shí)間變量都等于當(dāng)前時(shí)間*/bStart=true;startTime=endTime=Sys
3、tem.currentTimeMillis();repaint();newThread(this).start();}elseif(e.getID()==MouseEvent.MOUSE_RELEASED){/*鼠標(biāo)釋放時(shí),終止計(jì)時(shí)線程,并重繪窗口表面上的內(nèi)容*/bStart=false;repaint();}super.processMouseEvent(e);}publicvoidpaint(Graphicsg){/*時(shí)間值的小時(shí)、分鐘、秒、都用兩位數(shù)字顯示,不足兩位的部分前面加0,即"HH:mm:ss"這種的
4、格式。*/SimpleDateFormatsdf=newSimpleDateFormat("HH:mm:ss");/*最剛開始編寫這個(gè)程序的時(shí)候,直接使用elapsedTime.setTime(endTime-startTime);語句設(shè)置elapsedTime時(shí)間對象的數(shù)字值,從運(yùn)行結(jié)果上發(fā)現(xiàn),即使endTime-startTime等于0,但elapsedTime顯示的時(shí)間卻不是"00:00:00",而是"08:00:00"。我們曾經(jīng)講過,時(shí)間在計(jì)算機(jī)內(nèi)存中也是用一個(gè)長整數(shù)表示的,在這里,我們又發(fā)現(xiàn),即使這個(gè)內(nèi)存
5、中的長整數(shù)等于0時(shí),由于Date類考慮了本地時(shí)區(qū)問題,所以,其表示的時(shí)間就不一定為"零點(diǎn):零分:零秒"。這里不需要考慮時(shí)區(qū)問題,只是借助Date類來幫我們生成"HH:mm:ss"這種時(shí)間表示格式。明白這個(gè)問題后,我們就不難想像出,可以先求出顯示時(shí)間為"00:00:00"的時(shí)間對象在內(nèi)存中對應(yīng)的那個(gè)長整數(shù),然后在這個(gè)基礎(chǔ)上加上計(jì)時(shí)器所記下的時(shí)間值,最后就可以顯示出我們想要的結(jié)果。*/DateelapsedTime=null;try{elapsedTime=sdf.parse("00:00:00");}catch(Ex
6、ceptione){}elapsedTime.setTime(endTime-startTime+elapsedTime.getTime());Stringdisplay=sdf.format(elapsedTime);g.drawRect(0,0,78,28);g.fill3DRect(2,2,75,25,true);g.setColor(Color.WHITE);g.drawString(display,10,20);}publicvoidrun(){while(bStart){try{Thread.sleep
7、(500);}catch(Exceptione){e.printStackTrace();}endTime=System.currentTimeMillis();repaint();}}}publicclassTestStopWatch{publicstaticvoidmain(String[]args){Framef=newFrame("StopWatch");f.add(newStopWatch());f.setSize(200,200);f.setVisible(true);f.addWindowListen
8、er(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}}《Java就業(yè)培訓(xùn)教程》P319源碼程序清單:TestCheckbox.javaimportjava.awt.*;importjava.awt.event.*;publicclassTestChec