




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、中南大學Java課程設計報告題 目 打字游戲 學生 竇立陽 指導教師 陳麗萍 學 院 信息科學與工程學院 專業(yè)班級 計科1204 完成時間 2021年1月15日 目錄第一章 實驗要求.3第2章 總體設計2.1 界面設計 .42.2 運行流程 .42.3 邏輯設計 .42.4 積分設計 .4第3章 詳細設計3.1 主面板 .53.1.1 兩個按鍵 .53.1.2 相關全局變量 .53.1.3 全局變量說明 .5 3.1.4 相關全局函數 .73.2 字符下落模塊 .73.2.1 WordLabel .73.2.2 WordFallControl .83.2.3 WordFallLabel .83
2、.3 速度控制模塊 .83.4 按鍵模塊設計 .83.5 鍵盤監(jiān)聽事件 .93.6 積分模塊設計 .93.7 事件模塊設計 .10第4章 調試分析4.1 第一次調試 .114.2 第二次調試 .114.3 第三次調試 .12第5章 運行結果 .13第6章 課程設計總結 .17第7章 參考文獻 .19第8章 附錄:帶注釋的源代碼8.1 Wordfall .208.1.1 WordFallControl類 .208.1.2 WordLabel類 .228.1.3 WordFallLabel類 .238.2 ScoreLabel類 .248.3 StartButton類 .258.4 TimeLab
3、el類 .268.5 AAAAA類:程序的主函數入口 .288.6 Maintain類 .30第1章 實驗要求【問題描述】設計實現一個打字游戲,界面參見圖2-2,具備如下功能:l 點擊“開始按鈕,產生隨機字符從屏幕上方下落;l 點擊鍵盤上按鈕,如果正確,當前的字符消失,產生新的按鈕從上方繼續(xù)落下。l 提供速度調整和積分功能。圖2-2 打字游戲界面第2章 總體設計2.1 界面設計根據實驗要求中的圖2-2,在主面板中,1.1.1 有一個模塊控制各個字符的生成并且控制他們的自動下落,并在正確觸發(fā)時,字符不可見;1.1.2有一個模塊用于設置下落速度;1.1.3有兩個按鍵,分別為“開始和“結束,用于字符
4、下落的開始和結束;1.1.4整個面板處于鍵盤事件監(jiān)聽中,所以還有一個模塊負責監(jiān)聽鍵盤事件;1.1.5相應的,根據要求,會有一個模塊用于將鍵盤事件和下落的字符進行操作,并且計算出積分。2.2 運行流程1.2.1 程序啟動,程序等待按鍵“開始的事件的觸發(fā);1.2.2 當“開始鍵觸發(fā)后,負責字符下落的模塊,將持續(xù)產生字符,并使其下落;1.2.3 鍵盤開始被監(jiān)聽,從鍵盤的按鍵觸發(fā),向程序返回值;1.2.3 積分模塊開始工作,將字符下落模塊的字符和鍵盤事件返回的值進行比較,得出積分,并且將積分值顯示在面板上;1.2.4 如果點擊“停止按鍵,所有模塊停止工作,等待程序關閉,或者等待“開始按鍵事件的再次觸發(fā)
5、,從1.2.1繼續(xù)這一流程。 2.3 邏輯設計1.3.1 字符不斷產生并且下降,需要一個線程控制產生字符,然后還應該有一個線程對面一個字符,控制其下落。1.3.2 鍵盤被按下后,立刻會有值返回到程序中,積分模塊會每隔一段時間將,鍵盤事件返回的值,和當前需要按下的值進行比較。2.4 積分說明當開始產生字符后,會有很多字符都是可輸入的,但是當前可輸入的字符只有一個,所以可以考慮設計一個鏈表,沒當產生一個字符,便將該字符存入鏈表中,并且有一個指針永遠指向當前需要輸入的值。由于界面大小有限,當字符持續(xù)下落超過界面大小時,不能夠通過玩家來猜測,已經不見的當前需要輸入字符,所以當界面上字符超過十個時,便認
6、為該玩家反響時間過長,判定其為錯誤,并且將當前需要輸入的字符設置為下一個。并且從游戲角度考慮,當這種情況出現3次后,便可以判定本輪游戲結束。第3章 詳細設計3.1 主面板public class GameFrame extends JFrame主面板中主要涉及的是兩個按鍵,各個組件在面板上的布置,以及其他的全局變量的設置。3.1.1兩個按鍵 JButton btnStart = new JButton() JButton btnStop= new JButton() ScoreLabel scoreLabel KeyEventPanel keyEventPanel WordFallLabel
7、wordFallLabel JSlider slider3.1.2相關的全局變量boolean START_FLAG = false;ArrayList<Integer> CODE_LIST = new ArrayList<Integer>();ArrayList<WordLabel> wordLabels = new ArrayList<WordLabel>();int CHAR_VALUE = 0;int KEY_VALUE = 0;int POINTER = 0;int MAXFALSE = 3;int SUCCESSTIME = 0;in
8、t TRYTIME = 3;int SPEED = 1400;public static void init()CODE_LIST.clear(); wordLabels.clear();CHAR_VALUE = 0;KEY_VALUE = 0;POINTER = 0;MAXFALSE = 3;SUCCESSTIME = 0;TRYTIME = 3;3.1.3全局變量說明:START_FLAG:由于在程序啟動時,各個組件就已經開始工作,用START_FLAG使他們通過if語句,不做任何動作,當START_FLAG = true時,便可以開始進行游戲,防止了反復啟動線程可能會造成意外情況的麻煩。
9、CODE_LIST:在游戲線程啟動后,會產生很多的字符,這些字符假設存放在局部空間內,很有可能會出現其他組件需要調用該值并且需要通過一系列傳值過程才能實現,將這些值放在一個公共空間內的列表中,雖然會出現平安上面的問題,但是無疑為程序的實現減少了很多的工作,寬且這也只是一個游戲,在平安上的問題可以忽略。wordLabels:這個全局變量的設置,主要是為了實現下落字符的消失。產生的字符會放在label中,通過控制label的行為來控制字符的行為。將每一個WordLabel實例放在該列表中,可以通過在其他空間的控制來實現自己的想法。CHAR_VALUE:里面存放的是產生的字符的值,每一個字符都可以通
10、過ASCII碼轉變?yōu)橐粋€整數類型的值,通過比較整數值來確定是否匹配。KEY_VALUE:存放了最近一次從鍵盤內獲得的值,由于可能出現連續(xù)出現相同字符的情況,KEY_VALUE里的值必須定時清空,考慮之后,與每次在每次比較完之后進行清空操作比較適宜。POINTER:在CODE_LIST中會有很多數,但是當前正確的值,只有一個,那就是POINTER指向的位置,通過判斷KEY_VALUE和CHAR_VALUE的值,對POINTER進行操作,具體操作會在ScoreLabel中說明。MAXFALSE,TRYTIME:最大失誤次數,當超過這個次數時,當局游戲就會結束。SUCCESSTIME:本輪當前成功次
11、數,統(tǒng)計成功次數用來積分。SPEED:控制字符下落速度,這個值會與難度條上的值具有映射關系。3.1.4全局方法說明:public static void init();在新的一輪游戲開始前,全局變量中的值任然是上一輪的數據,需要對其中的數據進行初始化,設置為公共方法便于調用,其中的操作都是必須的操作,無多余也無漏缺。3.2 字符下落模塊3.2.1 public class WordLabel extends JLabel:這個類主要負責創(chuàng)立一個下落的字符。由于共有26個字母和10個數字會在游戲中被記為字符,通過隨機函數(int)(Math.random()*35) 產生36個隨機數,根據ASC
12、II碼的規(guī)那么,字符0-9對應的職位48-57,根據產生的值加上48,便可以得到字符0-9,同理字符A-Z對應的值為65-90,根據產生的值,由于是從10開始,所以加上55,就可以得到對應的字母字符,每產生一個字符,便將該字符添加到CODE_LIST中,以作他用。3.2.2 public class WordFallControl extends Thread:在WordLabel被實例化后,需要有個方法控制其下落,由于會產生喝多字符,對眾多字符進行統(tǒng)一管理,并且還要考慮到字符在其他情況下的動作,太過復雜,所以在這個組件中,只考慮字符的下落,每個字符交由一個控制對象控制。每過SD.SLEEP
13、毫秒的時間,WordLabel的位置便會下移一個單位,這個單位設置為50 。交由線程使其實現持續(xù)下降。3.2.3 public class WordFallLabel extends JLabel implements unnable:將前兩個組件進行組合便是這個類的作用,只要這個實例運行正常,那么出現問題就不會是該模塊的問題,除非是出現對字符的藝術化或是下落的幅度的改變這一類的需求。3.3 下落速度模塊JSlider slider = new JSlider();JSlider自帶的方法個頭getValue()可以獲得滑塊的值,向滑塊添加監(jiān)聽事件addChangeListener(),在滑塊
14、移動時,可以將改變之后的值映射到SD.SPEED上,以控制速度的變化。滑塊只能在一輪游戲開始前滑動,從程序實現角度考慮的理由是,當移動滑塊時,整個面板的焦點便會由按鍵轉移到滑塊上來,這是鍵盤事件監(jiān)聽的對象也會轉移到這個滑塊部件上來,這時候有兩種方法:一是在游戲中不允許移動滑塊,二是在滑塊中添加鍵盤監(jiān)聽事件。相比較之下第一種簡單而且符合大多數人的操作習慣,完全可以施行。 3.4 按鍵模塊設計同上一小節(jié)所說的焦點的轉移問題,將“開始和“結束設計為一個鍵,使整個面板的焦點可以在游戲開始到游戲結束都一直在同一個部件上,而且實現也很簡單,只要持續(xù)監(jiān)聽START_FLAG的值,分辨當前的游戲狀態(tài),就能確定
15、是該顯示“開始或是結束“了。 3.5 鍵盤監(jiān)聽設計鍵盤事件不是要向text area 之類的部件中輸入字符,而是向KEY_VALUE賦值,重寫KeyListener類,使鍵盤按下事件的響應設置為KEY_VALUE = event.getKeyCode()。3.6 積分模塊設計public class ScoreLabel extends JLabel implements Runnable該模塊涉及到的變量有KEY_VALUE,CHAR_VALUE,CODE_LIST,POINTER,SUCCESSTIME,TRYTIME。此時鍵盤事件監(jiān)聽中,只要有按鍵被按下,就會給KEY_VALUE賦一個值
16、,POINTER指向一個位置,將CODE_LIST.get(POINTER)的值與KEY_VALUE比較如果相等,那么POINTER的值加一,指向列表中的下一個值如果列表中還有的話,SUCCESSTIME加一;如果不相等,考慮這個值存在時間是否太長了,每個值都只有10個單位周期的生命這個可以通過列表的長度判斷出來,每個單位周期,都會向列表中添加一個新的字符,當CODE_LIST.size()-POINTER > 9時,POINTER自加一,指向下一個,TRYTIME減一,否那么不進行任何操作。3.7 時間模塊設計這局部主要是為了熟悉一邊線程的用法public class TimeLabe
17、l extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;private Date date = new Date();private SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");public TimeLabel()new Thread(this).start();Overridepublic void run() / TODO Auto-genera
18、ted method stubint i = 0;while(i < 10)try date = new Date();this.setText(sdFormat.format(date);new Thread();Thread.sleep(1000); catch (Exception e) / TODO: handle exceptione.printStackTrace();第4章 調試分析幾乎每寫一個類就會調試一次,類里面的修改也是很多的,下面只是找了三次比較大的改動進行說明。4.1 第一次調試:第一次調試沒有,參加按鈕和難度條,主要是為了確定程序的主體局部能夠正確執(zhí)行。發(fā)現的問
19、題有。一超出范圍異常:在所有線程啟動后,記分板會不斷調用CODE_LIST.get(POINTER)的方法,在第一次成功輸入后由于記分板線程的sleep時間短于,WordLabel產生線程的sleep時間,所以,列表內還沒有第二個值的時候便會要取第二個,所以出現這個問題。二 START_FLAG在線程執(zhí)行的過程中何時判斷的問題,開始時是放在第一位進行測試的,但是線程會在進行到START_FLAG為false就結束,除非重新實例化各個線程,但是,重新實例化又會在面板上添加新部件,導致新建一個游戲面板,所以讓游戲進程一直執(zhí)行,遇到START_FLAG為false是不做任何操作,線程并不中斷。4.2
20、 第二次調試:第二次調試也可以說是第二次大修改的主題內容就是全局變量的設計。隨著整個程序添加的不見越來越多,將各局部產生的值保存在局部,并且調用get和set方法去獲得值顯得越來越麻煩,而且很多地方涉及到部件之間的相互取值,如score label和word fall control 兩塊,score 需要里面的字符的值,而word fall 需要score里面對值的判斷情況,以便字符在被按下后及時消失。需要在兩個類中添加太多static數據和方法,同時,靜態(tài)變量和方法的調用又出現了很多限制問題。最后決定如3.1.1中列出的一系列全局變量,大大簡化了調用復雜度,也使整個程序顯得簡潔明了。4.3
21、 第三次調試:第三次調試是這次試驗中最簡單的問題,也是最復雜的問題,經驗問題。在一步一步添加完所有部件,并且對所有部件單獨測試后,我發(fā)現只要點擊開始按鈕后,不能夠正常監(jiān)聽鍵盤事件了。開始時,鍵盤監(jiān)聽事件是放在WordLabel中執(zhí)行的,在單獨測試時不會有任何問題。多方面查找資料也沒有發(fā)現類似的問題。于是從書本上的實例翻起,不經意想到,如果兩個文本框同時顯示卻只能向獲得焦點的那個文本框內輸入字符這個情況,瞬間清楚了問題所在。在進行調整后,重新執(zhí)行程序,已經能夠完成預期目標。第5章 運行結果主在程序調試完成后,可使用的穩(wěn)定版本的使用情況如下:圖6-1 打字游戲開始界面如圖 6-1顯示。程序開始時,
22、左上角為記分板,沒有任何數據顯示;右上角為顯示當前時間;中間局部使游戲的主要界面,用來顯示下落的字符,由于游戲尚未開始,沒有任何顯示;左下角是游戲開始的按鈕,當前顯示為“開始,在點擊后,變?yōu)椤敖Y束,并且記分板開始積分,游戲住界面開始下落字符,參照圖6-2;右下角為難度調整框可以設置難度,左低右高。圖6-2 打字游戲進行中如圖 6-2顯示。游戲正常開始后,記分板開始積分,會記錄正確的個數,如果超出時間為按下正確的字符,剩余時機就會減少一次,在記分板的最后面,會有提示當前應當輸入的正確字符;游戲主界面會有字符持續(xù)落下,當按下正確的字符后,該字符消失,正確字符更新;左下角的按鈕在點擊使游戲開始后,變
23、為“結束按鈕;右下角的難度條,可以在游戲前移動,游戲中不可以移動,具體原因參照在第三章詳細設計中,設計鍵盤監(jiān)聽事件的時候已經說明。圖6-3 打字游戲正常退出如圖 6-3 顯示。當點擊結束按鈕后,左下角的按鈕將會變?yōu)椤伴_始按鈕;記分板保持顯示,用于玩家查看此次游戲的成績,游戲主界面上不會在產生下落字符,直到下輪游戲的開始;該輪游戲產生的字符繼續(xù)下落完畢,但是此時已經可以開始進行下輪游戲了。這點是設計上的缺憾,在以后會進行修改使其更加完善。圖6-4 打字游戲錯誤過多退出如圖 6-4 顯示。此次本輪游戲結束的原因是錯誤過多,沒有剩余時機了。玩家仍然可以在記分板上查看到自己的成績。左下角的按鈕也適時變
24、為了開始“按鈕。第6章 課程設計總結本次實驗的內容選取的是打字游戲,最后完成了實驗要求內的全部內容。實驗過程中,沒有借助外力,參考內容也只是Java 的API文檔,在這一點上自己還是比較滿意的。實驗完成后,與其他同學比較的情況是,美工缺乏,界面只是按照實驗要求上的例圖設計的,沒有添加更有意思的東西。這次試驗有兩個小的收獲。一是加深的對線程的理解。在設計之初,出現的一個最大問題就是在一個線程內添加了另外一個線程,而且副線程不是自啟動的,在主線程中斷時,副線程也是出于終端狀態(tài),沒有被執(zhí)行到,經過屢次斷點測試發(fā)現了這個問題,這個結論可能是錯誤的,但是確實適用于我遇到的情況。二是發(fā)現編程這個東西,跟技
25、術有60%的關系,跟知識儲藏有30%的關系,剩下的10%就要看個人的經驗。30%看看書,查查資料就行。60%注重的是對代碼量的考驗。10%是對代碼復雜度的考驗,相似的代碼敲一萬遍,也還是那樣,時間長了不做,就忘了,各個組件都能正常運行,組合在一起后卻會出現焦點變化的問題,如果不是這次遇到,并且發(fā)現了,以后遇到類似的問題,我還是不知道。這個問題雖然簡單,我也一直遲遲沒有請教老師或同學,一是覺得放不下臉,二也是鍛煉一下自己的思維能力,可能第一次解決沒有遇到過的問題會花費一天兩天,第二次可能就是半天,而且自己發(fā)現問題所在,在自己的鬧鐘印象更加深刻,自己也更加有成就感。大的收獲是,自己這次嘗試著從結構
26、層次的角度考慮程序的設。將整個程序分為各個組件,最后通過組件的結合形成整個程序。程序簡單,并沒有很多層次,而且層次對程序的重要性也不是那么明顯,但是嘗試著這么做,并且在以后的每一次都向這方面努力,我想對我程序員生活的提升是會有很大的幫助的。實驗只需要選取一個實驗完成,但是其他實驗也是老師花費心思,想出來的題目,比方說圖形編輯系統(tǒng),好似很少有人選,但是看上去也是挺有意思的,決定在寒假的時候,著手實現以下,雖然java的優(yōu)勢并不在于此,但是從以上所說的各個方面也很有必要。第7章 參考文獻JDK1.5API_CN(全).chm:C:UsersadminDesktopAPIJDK1.5API_CN(全
27、).chm第8章 附錄:帶注釋的源代碼本章附上整個課程設計的游戲源代碼,以及相關測試代碼。 相關組件:Component包: 8.1 Wordfall子包: 8.1.1 wordFallControl類:字符下落的規(guī)律package release.conponent.wordfall;import javax.swing.JLabel;import release.SD;public class WordFallControl extends Threadprivate JLabel jLabel;private WordLabel wordLabel;private int x = 0;p
28、rivate int y = (int)(Math.random()*10);/control word label fall,where,who and howpublic WordFallControl(JLabel jLabel,WordLabel wordLabel)this.jLabel = jLabel;this.wordLabel = wordLabel;this.jLabel.add(this.wordLabel);this.wordLabel.setBounds( y*SD.WORD_LABEL_WIDTH,x*SD.WORD_LABEL_HEIGHT+50, SD.WORD
29、_LABEL_WIDTH, SD.WORD_LABEL_HEIGHT );new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stubwhile(x<10)try / in every SD.SPEED_ms,word label will fall one 50,x+;this.wordLabel.setBounds(y*SD.WORD_LABEL_WIDTH/5, x*SD.WORD_LABEL_HEIGHT, SD.WORD_LABEL_WIDTH, SD.WORD_LABE
30、L_HEIGHT );if(x = 9)/when word label is beyond the frame,no one can see it,it contains nothingthis.wordLabel.setText(null);sleep(SD.SPEED); catch (Exception e) e.printStackTrace();super.run();package release.conponent.wordfall;import javax.swing.JLabel;import release.SD;public class WordFallLabel ex
31、tends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;public WordFallLabel()setSize(500,500);new Thread(this).start();System.out.println("world fall start");Overridepublic void run() / TODO Auto-generated method stubint repeat = 0;/thread goes on constantly
32、,if thread runs 100 times,it will stopwhile(0<1&&repeat<100)/if SD.START_FLAG is false,the thread will do nothing,just skip itif(SD.START_FLAG)/characters and fallnew WordFallControl(this, new WordLabel();repeat+;try new Thread();Thread.sleep(SD.SPEED); catch (Exception e) / TODO: hand
33、le exceptione.printStackTrace();else try new Thread();Thread.sleep(SD.SPEED); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.1.2 wordFall類:產生可控制下落的字符package release.conponent.wordfall;import javax.swing.ImageIcon;import release.SD;public class WordLabel extends JLabel/* * version
34、1.0 */private static final long serialVersionUID = 1L;/初始化word label對象,里面的值為用隨機數產生的字符public WordLabel()setText(getChar().toString();setVisible(true);SD.wordLabels.add(this);private Character getChar()/以相同概率獲得一個數字int random_integer = (int)(Math.random()*35);/將該數字通過ASCII碼轉為對應的字符char int_to_char = rand
35、om_integer>9?(char)(random_integer+55):(char)(random_integer+48);/向SD.CODE_LIST里面添加一個新生成的word labelSD.CODE_LIST.add(random_integer>9?random_integer+55:random_integer+48);return int_to_char;8.1.3 WordFallLabel類:整合字符下落這個過程package release.conponent.wordfall;import javax.swing.JLabel;import releas
36、e.SD;public class WordFallLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;public WordFallLabel()setSize(500,500);new Thread(this).start();System.out.println("world fall start");Overridepublic void run() / TODO Auto-generated method stubint rep
37、eat = 0;/thread goes on constantly,if thread runs 100 times,it will stopwhile(0<1&&repeat<100)/if SD.START_FLAG is false,the thread will do nothing,just skip itif(SD.START_FLAG)/characters and fallnew WordFallControl(this, new WordLabel();repeat+;try new Thread();Thread.sleep(SD.SPEED)
38、; catch (Exception e) / TODO: handle exceptione.printStackTrace();else try new Thread();Thread.sleep(SD.SPEED); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.2 ScoreLabel類:用于記錄得分package release.conponent;import javax.swing.JLabel;import release.SD;public class ScoreLabel extends
39、JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;/ initialize the label public ScoreLabel()setText("天下武功,唯快不破");new Thread(this).start();System.out.println("scroe start");Overridepublic void run() / TODO Auto-generated method stub/使線程持續(xù)執(zhí)行while(0<
40、;1)try new Thread();Thread.sleep(300); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();if(SD.START_FLAG)/當游戲開始執(zhí)行時,SD.CODE_LIST里面才會有值,否那么會報空指針異常if(SD.CODE_LIST.size()>0)/將鍵盤輸入值和應當輸入的值進行比較if(SD.KEY_VALUE = SD.CODE_LIST.get(SD.POINTER)/如果匹配,那么成功次數加一,指向的字符的位置也會向下挪一
41、位SD.SUCCESSTIME+;SD.wordLabels.get(SD.POINTER).setVisible(false);SD.KEY_VALUE = 0;SD.POINTER+;else if(SD.CODE_LIST.size()-SD.POINTER)>9)/如果不匹配,當該字符從產生到超過界面時如果還沒有被正確按下,剩余嘗試次數減一,指向的字符的位置也會向下挪一位,超過三次,停止計分SD.POINTER+;SD.TRYTIME-;if (SD.TRYTIME = 0) SD.START_FLAG = false;setText("天下武功,唯快不破")
42、;/顯示當前成績和應當鍵入的字符char c = 'd'int i = SD.CODE_LIST.get(SD.POINTER);c = (char)i;setText("正確:"+SD.SUCCESSTIME+" 剩余時機:"+SD.TRYTIME+"正確字符:"+c);else 8.3 StartButton類:用于控制游戲開始和結束package release.conponent;import javax.swing.JButton;import release.SD;public class StartBut
43、ton extends JButton implements Runnablepublic StartButton()new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stub/根據監(jiān)視的游戲狀態(tài),控制按鍵字符的顯示while(0<1)if (SD.START_FLAG) this.setText("結束");else this.setText("開始");try new Thread();Thread.sleep(1000); catch
44、 (Exception e) / TODO: handle exceptione.printStackTrace();8.4 TimeLabel類:用于顯示當前時間package release.conponent;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JLabel;public class TimeLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1
45、L;private Date date = new Date();private SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");public TimeLabel()new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stubint i = 0;while(i < 10)try date = new Date();this.setText(sdFormat.form
46、at(date);new Thread();Thread.sleep(1000); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.5 AAAAA:整個程序的主面板package release.maintain;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import release.SD;import release.conponent.StartButton;import javax.swing.JSlider;import javax.swing.event.ChangeListener;im
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園返租現場管理制度
- 檔案證書文件管理制度
- 2024年理線器項目資金申請報告代可行性研究報告
- 水力發(fā)電生態(tài)影響-洞察及研究
- 傳化集團java面試題及答案
- 超市導購面試題及答案
- 濟南廣電面試題及答案
- 自考漢語試題及答案
- 視力檢查法試題及答案
- 道家尋物考試題及答案
- 福建省南平市2023-2024學年八年級下學期期末考試數學試卷(含答案)
- 集控運行崗面試題及答案
- 河道疏浚對漁業(yè)發(fā)展的影響與對策
- 2024年11月傳播學教程試題庫(附答案解析)
- 2025年中考數學:初中八年級下冊第X單元:代數綜合測試試卷
- 白酒酒店合作合同協(xié)議書
- T/CIE 209-2024兒童實物編程教育評價指南
- 中國融通農業(yè)發(fā)展有限集團有限公司招聘筆試題庫2025
- 塑料包裝制品項目投資計劃書
- 2025年入團考試常見問題及試題答案
- 2025浙江杭州市科創(chuàng)集團有限公司招聘10人筆試參考題庫附帶答案詳解
評論
0/150
提交評論