宣傳語
15個Java項目
6萬多行Java代碼
開發一個項目,掌握一套知識
瘋狂源自夢想技術成就輝煌
內 容 簡 介
本書 除了這些遊戲案例外,還有若干個讀者平時會接觸到的軟體,例如Windows計算器、MySQL企業管理器、郵件客戶端、多執行緒下載工具等。讀者使用到這些軟體時,根據本書所描述的案例,可以深入了解這些軟體的原理以及開發細節。本書中的所有案例均基於Eclipse IDE開發,源碼均附有詳細的注釋。本書案例由淺入深,帶領讀者一步步體會Java語言之美。
前 言
近年來,隨著Java技術的不斷發展,Java語言已經成為最主流的開發語言,廣泛套用於各個行業:金融、製造、政務、電信等,從大型企業級套用到桌面套用技術,Java無處不在。
除了在大型企業級套用開發中占據了絕大部分的市場份額之外,Java還提供了AWT/Swing、SWT/JFace(著名的Eclipse開發工具就基於此)兩套主流的GUI開發庫,運用它們可以開發出非常優秀的桌面應用程式。
本書匯集了作者精心編寫的15個Java項目、6萬多行Java代碼,集中介紹了如何通過Java語言開發桌面應用程式。本書想通過這些項目達到兩個目的:
讓讀者體會Java語言的強大魅力,Java語言也可以開發出強大的桌面應用程式;
將讀者從SSH開發的大量低層次、重複性的體力勞動中釋放出來,多關注Java本身的魅力,如Java的網路通信、多執行緒等。當讀者真正把Java基礎打紮實之後,再去看SSH開發,將會看到更高的層次。
本書除了使用Java的桌面套用技術外,還涉及到其他Java技術,例如JDBC、Java反射、dom4j的使用、JUnit的使用、XStream的使用、Socket編程等。JDBC是一種可用於執行SQL語句的Java API,它可以讓Java開發人員使用純Java開發資料庫套用。本書第15章詳細介紹了如何使用Socket編程去開發一個網路五子棋。本書介紹的項目由淺入深、實用性強,讀者可通過項目實戰來掌握Java語言在編程中的實際運用。
本書的內容結構
本書以15個Java項目為核心,介紹了Java的Swing、AWT圖形界面技術,以及Java網路通信、Java多執行緒支持、Java反射、設計模式、JDBC等知識點。希望通過這15個項目激發讀者的編程激情。
本書前8章主要是一些常見的遊戲和工具,包括控制台五子棋、仿Windows計算器、單機俄羅斯方塊、單機連連看、簡單Java IDE工具等程式,其中,前面7章的項目相對比較簡單,主要讓讀者對Java應用程式開發有一定的了解。
本書第9章和第10章除了使用Java的桌面應用程式外,還詳細介紹了如何使用JDBC運算元據庫,以及如何使用反射對結果集進行封裝等技術。
第11章詳細描述了如何使用Java開發一個多執行緒下載工具,其中包括如何實現斷點續傳、HTTP下載等功能。
第12章使用JavaMail技術開發了一個類似於Foxmail的郵件客戶端,介紹了JavaMail、XStream等技術的使用。
第13章描述的是一個MySQL管理器,在平時的開發過程中,我們會接觸到各種各樣的MySQL管理器,在該章中,讀者可以了解到這些MySQL管理器的實現細節。
Spring是當前流行的Java EE框架,主要分為IoC和AOP技術,其IoC套用最為廣泛,第14章編寫了一個類似於Spring的IoC容器,通過該項目即可讓讀者掌握XML、dom4j、Java反射在實際項目中的套用,也能更好地理解IoC容器的實現。
第15章使用Java的Socket通信、多執行緒等知識,開發了一個仿QQ遊戲大廳的框架,在此框架的基礎上,可以加入不同的遊戲組件,本章主要演示開發了一個網路五子棋與聊天室的組件。
創作本書還有一個目的:為瘋狂Java體系的《瘋狂Java講義》課後習題提供一份“非標準”參考答案,雖然軟體編程並沒有所謂的“標準答案”,但瘋狂Java聯盟上經常有網友提出:希望看到《瘋狂Java講義》課後習題的參考答案,所以筆者精心編寫了這15個項目,希望能給廣大讀者提供一些參考和借鑑。如果讀者在閱讀本書過程中遇到不懂的技術問題,可以登錄瘋狂Java聯盟獲得幫助。
本書的特點和優勢
本書由具有多年開發經驗的Java工程師編寫,作者在Java領域具有多年的開發研究經驗。本書沒有詳細介紹Java是什麼、Java語法知識這些基本理論,本書介紹的是Java能做什麼、如何運用Java編寫實際項目?本書匯集了作者精心編寫的15個Java項目,總共6萬多行Java代碼,具有很高的學習、參考價值。
本書特點如下:
1.項目全面、貼近實際
本書包括大量的Java項目:仿QQ遊戲大廳、單機連連看、MySQL管理器、郵件客戶端、多執行緒斷點下載工具......項目由淺入深,這些實用的項目將充分激發讀者的學習激情,讓讀者在瘋狂實戰中享受Java編程酣暢淋漓的快感。
2.知識覆蓋廣、學以致用
本書的項目覆蓋了大量的Java知識點,包括Swing編程、JDBC、Socket網路通信、多執行緒、Java反射和JavaMail等。但本書的獨到之處在於:並非簡單地介紹這些知識,而是以“項目驅動”的方式進行介紹,力求讓讀者做到“開發一個項目、掌握一套知識點”。
3.講解詳細,啟發性強
本書將重點解決大部分Java學習者的學習困擾:語法會了,動手編程卻沒思路!本書不僅要教讀者使用Java語言開發項目,更向讀者介紹程式開發的思路,希望啟發讀者的編程思路,帶領讀者步入編程的殿堂。
本書讀者對象
本書大部分篇幅是介紹如何運行Java語言來開發實際項目,因此對Java語言本身語法細節介紹的比較少,因此需要讀者有一定的Java語言基礎。如果讀者對Java語言本身的基礎還不紮實,建議先閱讀瘋狂Java體系的《瘋狂Java講義》一書。
本書將非常適合以下三類讀者,:
1.已經學習過Java語法知識,有一定Java語言基礎的讀者;
2.掌握了Java編程的語法知識,但實際動手開發卻感到困難重重的讀者;
3.需要使用Java進行實際開發,尤其是需要開發桌面程式、遊戲的讀者。
本書服務與致謝
在本書創作過程中得到了博文視點朱沭紅老師的悉心指導,除此之外,中企開源的技術經理伍巧雲、北京中通軟聯資深架構師陳操、中企開源系統設計師李賢棣、鍾永生等也為本書的編寫提供了幫助,在此表示衷心的感謝。同時感謝我的太太鄧素群在成書過程中給予筆者的照顧與關懷。
本書由李剛指導,楊恩雄、麥凱翔編著,參與本書編寫的還有的還有雷雄軍、劉琴、陳正偉、袁達穩、王斌、葉桂平、羅宇航和鄧素群。
對於書中內容及編排我們力求精益求精,但錯誤及疏忽之處在所難免,敬請廣大讀者批評指正。
楊恩雄
目 錄
第1章控制台五子棋 1
1.1引言 2
1.1.1五子棋介紹 2
1.1.2輸入輸出約定 2
1.2遊戲流程描述 3
1.2.1玩家輸入坐標 3
1.2.2 “電腦”下棋 4
1.3創建遊戲的各個對象 4
1.3.1Chessboard類 5
1.3.2Chessman類 6
1.3.3GobangGame類 6
1.4棋盤類實現 7
1.4.1初始化棋盤 7
1.4.2輸出棋盤 8
1.4.3獲取棋盤 9
1.5棋子枚舉類實現 9
1.6遊戲類實現 11
1.6.1使用BufferedReader獲取鍵盤輸入 11
1.6.2驗證玩家輸入字元串的合法性 12
1.6.3判斷輸贏 13
1.6.4“電腦”隨機下棋 15
1.6.5是否重新遊戲 16
1.6.6遊戲過程實現 16
1.7本章小結 18
第2章仿Windows計算器 19
2.1仿Windows計算器概述 20
2.1.1數學符號與其他符號介紹 20
2.1.2界面說明 21
2.2流程描述 21
2.3建立計算器對象 22
2.3.1MyMath工具類 22
2.3.2CalService類 23
2.3.3CalFrame類 24
2.4MyMath工具類實現 24
2.5計算器主界面 25
2.5.1初始化界面(initialize()方法) 26
2.5.2創建運算鍵 28
2.5.3創建操作按鍵 29
2.5.4增加事件監聽器 30
2.6計算業務處理 31
2.6.1計算四則運算結果 31
2.6.2存儲操作 33
2.6.3實現開方、求倒數等 34
2.6.4實現回退操作 35
2.6.5清除計算結果 35
2.6.6實現中轉方法(callMethod) 35
2.7本章小結 36
第3章圖片瀏覽器 37
3.1圖片瀏覽器概述 38
3.2創建圖片瀏覽器的相關對象 38
3.2.1檔案過濾器 39
3.2.2檔案對話框 39
3.2.3主界面類 40
3.2.4業務處理類 40
3.2.5操作處理類 40
3.3創建主界面 41
3.3.1初始化界面(init()方法) 41
3.3.2創建選單欄 41
3.3.3創建工具列 43
3.4實現圖片瀏覽的操作 44
3.4.1實現工具列單擊 44
3.4.2實現選單的單擊 47
3.4.3打開圖片 48
3.4.4放大或者縮小圖片 49
3.4.5瀏覽“上一張”或“下一張”
1.6.1圖片 49
3.5檔案選擇與過濾 50
3.6本章小結 51
第4章桌面彈球 52
4.1桌面彈球概述 53
4.1.1動畫原理 53
4.1.2小球反彈的方向 53
4.2流程描述 54
4.3創建遊戲對象 54
4.3.1基類BallComponent 55
4.3.2磚塊類(Brick) 56
4.3.3道具類及其子類(Magic) 57
4.3.4擋板類(Stick) 57
4.3.5小球類(Ball) 57
4.3.6業務處理類(BallService) 58
4.3.7主界面類(BallFrame) 59
4.4主界面實現 59
4.4.1初始化界面(initialize()方法) 60
4.4.2單態模式簡介 61
4.4.3運行效果 61
4.4.4監聽器與Timer 62
4.5擋板、小球、磚塊、道具 63
4.5.1擋板(Stick類) 63
4.5.2小球(Ball類) 65
4.5.3道具(Magic及其子類) 66
4.5.4磚塊(Brick類) 67
4.6BallService類實現 68
4.6.1創建與設定磚塊 68
4.6.2設定擋板的位置(移動擋板) 70
4.6.3小球與磚塊碰撞 71
4.6.4小球、道具與擋板碰撞 73
4.6.5道具的移動 73
4.6.6改變擋板的長度(道具的作用) 74
4.6.7判斷是否已經通關 75
4.7功能改進設計 76
4.7.1關卡 77
4.7.2計分 77
4.7.3道具 77
4.8本章小結 78
第5章單機俄羅斯方塊 79
5.1俄羅斯方塊簡介 80
5.2建立界面 80
5.2.1方塊堆砌界面 80
5.2.2遊戲界面 80
5.3創建遊戲對象 82
5.3.1設計小方塊對象 82
5.3.2設計大方塊對象 83
5.4創建與顯示大方塊 86
5.4.1隨機讀取小方塊圖片 86
5.4.2創建大方塊對象 87
5.4.3顯示當前方塊 89
5.5處理方塊的行為 91
5.5.1方塊變化 91
5.5.2方塊的左移和右移 93
5.5.3方塊下降 94
5.5.4方塊快速下降 95
5.5.5判斷是否停止下降 96
5.5.6創建界面的二維數組 96
5.5.7判斷是否遇到障礙 98
5.5.8方塊結束下降 100
5.6消除行、計分與級別的提升 100
5.6.1消除行 100
5.6.2加入分數計算與級別提升 102
5.7遊戲操作 103
5.7.1遊戲的暫停 103
5.7.2遊戲的繼續 104
5.7.3判斷遊戲失敗 104
5.8本章小結 104
第6章仿Windows畫圖 105
6.1畫圖軟體概述 106
6.2畫圖工具原理 106
6.2.1畫線 106
6.2.2其他畫圖功能 107
6.2.3保存圖片功能 107
6.3創建畫圖工具的各個對象 107
6.3.1工具接口Tool 108
6.3.2Tool的實現類AbstractTool 109
6.3.3AbstractTool的子類 110
6.3.4界面類ImageFrame 110
6.3.5業務邏輯類ImageService 111
6.3.6檔案選擇類
6.3.6ImageFileChooser 111
6.4主界面實現 112
6.4.1初始化界面(init()方法) 112
6.4.2獲取畫板 114
6.4.3創建選單 114
6.4.4創建畫圖工具列 116
6.4.5創建顏色選擇面板 118
6.5工具實現 119
6.5.1實現拖動框線改變畫布大小 120
6.5.2實現父類的畫圖方法 121
6.5.3滑鼠移動時改變指針 122
6.5.4記錄滑鼠按下的位置 123
6.5.5重繪圖片 123
6.5.6鉛筆工具 124
6.5.7直線工具、矩形工具、橢圓工具和圓角矩形工具 124
6.5.8多邊形工具 126
6.5.9刷子與橡皮擦 128
6.5.10噴槍工具 129
6.6ImageService類的實現 130
6.6.1打開圖片檔案 130
6.6.2保存圖片 131
6.6.3新建圖片 132
6.6.4顏色剪輯器 133
6.6.5檔案過濾 133
6.6.6根據對選單的單擊調用相應
1.6.1的方法 134
6.6.7判斷圖片是否已經保存 135
6.7本章小結 135
第7章單機連連看 136
7.1連連看遊戲簡介 137
7.2連連看遊戲原理 137
7.3創建遊戲界面與遊戲區域 137
7.3.1創建遊戲界面 137
7.3.2遊戲區域實現原理 138
7.3.3創建圖片方塊對象 138
7.3.4創建遊戲處理類 140
7.3.5圖片的讀取 140
7.3.6創建遊戲區域圖片數組 143
7.3.7根據數組畫遊戲區域 144
7.3.8隨機初始化遊戲 145
7.4實現連線程式 147
7.4.1圖片選擇 147
7.4.2創建連線的相關對象 149
7.4.3準備獲取通道的工具方法 151
7.4.4沒有轉折點的橫向連線 152
7.4.5沒有轉折點的縱向連線 154
7.4.6一個轉折點的連線 155
7.4.7兩個轉折點的連線 157
7.4.8找出最短距離 162
7.4.9畫上連線線 164
7.5加入計分與計時功能 165
7.5.1加入計分功能 165
7.5.2加入計時功能與遊戲的勝利、失敗 166
7.6本章小結 168
第8章簡單Java IDE工具 169
8.1IDE工具簡介 170
8.2Java IDE的主要功能 170
8.3建立界面 170
8.3.1建立主編輯區和信息顯示區 171
8.3.2建立項目顯示區 172
8.3.3添加選單和工具列 173
8.3.4建立工作空間選擇界面 176
8.3.5建立檔案、目錄和項目添加界面 177
8.4實現工作空間選擇功能 178
8.4.1實現目錄選擇功能 178
8.4.2實現工作空間選擇的確定按鈕 181
8.5創建項目樹 182
8.5.1創建樹的各個對象 182
8.5.2實現創建項目樹的功能 184
8.5.3設定樹的外觀 188
8.5.4實現樹節點的選擇事件 190
8.6實現檔案操作功能 192
8.6.1新建檔案 192
8.6.2新建目錄 197
8.6.3新建項目 198
8.6.4策略模式 201
8.6.5檔案打開 201
8.6.6顯示行數與高亮 211
8.6.7檔案的保存功能 216
8.6.8運行Java檔案 221
8.7實現文本操作 223
8.8本章小結 223
第9章圖書進銷存系統 224
9.1項目簡介 225
9.2建立界面 225
9.2.1登錄界面 225
9.2.2銷售管理界面 225
9.2.3入庫管理界面 227
9.2.4書本管理界面 227
9.2.5種類管理界面 228
9.2.6出版社管理界面 229
9.2.7修改界面代碼 230
9.3設計系統資料庫 233
9.3.1設計出版社表 233
9.3.2設計種類表 234
9.3.3設計書表 234
9.3.4設計入庫記錄表 235
9.3.5設計銷售記錄表 236
9.4開發前的準備工作 237
9.4.1設計表的對應類 237
9.4.2編寫配置讀取類 239
9.4.3編寫JDBC操作類 240
9.4.4創建數據轉換工具類 243
9.5出版社管理功能 244
9.5.1分層結構 244
9.5.2獲取全部出版社 245
9.5.3模糊查詢 248
9.5.4查看出版社 250
9.5.5新增出版社 252
9.5.6修改出版社 255
9.6書本管理功能 256
9.6.1獲取全部書 256
9.6.2查看書本 258
9.6.3新增書本 260
9.6.4圖片上傳功能 261
9.7銷售管理功能 264
9.7.1銷售記錄列表 264
9.7.2查看交易記錄 267
9.7.3實現新增交易記錄功能 270
9.8本章小結 273
第10章事務跟蹤系統 274
10.1確定系統需求 275
10.2建立界面 275
10.2.1登錄界面 275
10.2.2我的事務界面 276
10.2.3事務的完成、暫時不做、不做
10.2.3的處理界面 277
10.2.4事務轉發界面 278
10.2.5事務管理界面 278
10.2.6新建事務界面 279
10.2.7用戶選擇界面 280
10.2.8用戶管理界面 281
10.2.9新建用戶界面 282
10.3開發準備 282
10.3.1數據轉換工具類 282
10.3.2資料庫執行類 284
10.3.3DAO層的基類 285
10.3.4值對象基類 285
10.4用戶管理 286
10.4.1設計用戶管理的相關對象 286
10.4.2用戶登錄 287
10.4.3查找全部用戶 290
10.4.4新增用戶功能 292
10.4.5刪除用戶 293
10.4.6查詢用戶 293
10.5事務管理 294
10.5.1設計事務對象 294
10.5.2根據發起人查找事務 295
10.5.3新建事務 297
10.5.4催辦事務 298
10.5.5將事務置為無效 300
10.6我的事務 301
10.6.1設計其他對象 301
10.6.2將事務設為“暫時不做”狀態 302
10.6.3將事務置為“不做”狀態 305
10.6.4完成事務 306
10.6.5轉發事務 307
10.6.6查看事務 308
10.6.7查詢事務 310
10.7本章小結 311
第11章多執行緒下載工具 312
11.1多執行緒下載工具簡介 313
11.2建立下載工具的界面 313
11.2.1主界面 313
11.2.2導航樹 314
11.2.3資源列表 316
11.2.4資源信息顯示 318
11.2.5新建下載任務界面 319
11.2.6懸浮視窗 319
11.2.7系統列圖示 322
11.3設計下載的相關對象 322
11.3.1資源狀態對象 322
11.3.2塊對象 323
11.3.3資源對象 324
11.3.4上下文對象 327
11.4下載資源 329
11.4.1界面新增下載資源 329
11.4.2建立下載執行緒 331
11.4.3進行檔案分割 333
11.4.4檔案合併 336
11.4.5暫停下載 337
11.4.6繼續下載 337
11.5保存下載信息 339
11.5.1進行序列化保存對象 339
11.5.2反序列化 340
11.6其他操作 341
11.6.1查看任務 341
11.6.2刪除任務 342
11.6.3刪除已經完成的任務 343
11.6.4開始全部任務 343
11.6.5暫停全部任務 344
11.6.6節點的單擊 344
11.6.7打開/關閉主視窗 345
11.7本章小結 345
第12章郵件客戶端 346
12.1本章涉及的技術 347
12.1.1JavaMail簡介 347
12.1.2SMTP簡介 347
12.1.3POP3簡介 347
12.1.4XStream簡介 347
12.2建立界面 348
12.2.1登錄界面 348
12.2.2客戶端主界面 348
12.2.3配置界面 352
12.2.4郵件編寫界面 353
12.3創建客戶端的基礎對象 354
12.3.1創建信箱上下文對象 355
12.3.2創建郵件對象 356
12.4用戶登錄與用戶配置 358
12.4.1實現用戶登錄 358
12.4.2實現用戶信息配置 360
12.5接收郵件 362
12.5.1接收郵件 362
12.5.2獲取郵件的正文 364
12.5.3獲取郵件的收件人 365
12.5.4獲取郵件的發件人 365
12.5.5獲取郵件的傳送日期 366
12.5.6獲取郵件的大小 366
12.5.7獲取郵件的抄送地址 366
12.5.8獲取附屬檔案並存放到本地的目錄中 367
12.5.9將Message封裝為Mail 368
12.5.10對郵件進行排序 369
12.5.11刪除郵件伺服器上的郵件 370
12.5.12將Mail對象轉換成XML
12.5.11檔案並保存到本地目錄中 371
12.5.13在界面中顯示郵件 372
12.5.14編寫任務調度器接收郵件 375
12.6初始化界面數據 376
12.6.1將XML檔案轉換為Mail對象 376
12.6.2在各個Box間切換 378
12.7操作郵件 380
12.7.1查看郵件 380
12.7.2查看附屬檔案 382
12.7.3刪除郵件 385
12.7.4徹底刪除郵件 385
12.7.5還原郵件 386
12.8傳送郵件 387
12.8.1實現傳送郵件的功能 388
12.8.2界面封裝Mail對象進行傳送 390
12.8.3處理郵件附屬檔案 391
12.8.4測試傳送郵件功能 392
12.8.5處理郵件的其他功能 393
12.9本章小結 393
第13章MySQL管理器 394
13.1MySQL管理器原理 395
13.2建立界面 395
13.2.1MySQL安裝目錄選擇界面 396
13.2.2主界面 396
13.2.3數據顯示界面 401
13.2.4創建連線界面 403
13.2.5創建表界面 404
13.2.6視圖界面 407
13.2.7存儲過程界面 407
13.2.8查詢界面 408
13.2.9樹節點右鍵選單 408
13.2.10數據列表右鍵選單 408
13.3實現MySQL安裝目錄選擇功能 410
13.3.1實現目錄選擇 410
13.3.2讀取和保存安裝目錄路徑 411
13.3.3讀取連線信息 411
13.4連線管理 413
13.4.1創建連線節點 413
13.4.2打開連線 414
13.4.3新建連線 417
13.4.4刪除連線 419
13.4.5關閉連線 420
13.5資料庫管理 420
13.5.1打開資料庫 421
13.5.2新建資料庫 422
13.5.3刪除資料庫 423
13.5.4關閉資料庫 423
13.6視圖管理 424
13.6.1讀取視圖列表 424
13.6.2新建視圖 426
13.6.3修改視圖與刪除視圖 427
13.7存儲過程與函式管理 427
13.7.1新增存儲過程和函式 427
13.7.2修改存儲過程與函式 428
13.8表管理 429
13.8.1新欄位 430
13.8.2插入欄位與刪除欄位 431
13.8.3編輯欄位 432
13.8.4設定默認值與自動增長 434
13.8.5新外鍵 435
13.8.6刪除一個外鍵 436
13.8.7查詢欄位信息 436
13.8.8查詢外鍵信息 437
13.8.9新建表 439
13.8.10修改表 440
13.8.11刪除表 442
13.9數據瀏覽 442
13.9.1瀏覽數據 443
13.9.2刷新數據 445
13.9.3數據排序 445
13.10執行SQL語句 446
13.10.1運行SQL語句 446
13.10.2保存SQL語句 447
13.11SQL檔案的導入與導出 447
13.11.1執行SQL檔案 447
13.11.2導出資料庫與表 448
13.12本章小結 449
第14章自己開發IoC容器 450
14.1IoC簡介 451
14.2使用技術簡介 451
14.2.1Java反射簡介 451
14.2.2Dom4j 452
14.2.3JUnit 452
14.3確定配置檔案內容、編寫DTD 452
14.3.1聲明bean 452
14.3.2聲明單態的bean 453
14.3.3聲明延遲載入 453
14.3.4聲明設值注入到bean的屬性 453
14.3.5聲明構造注入到bean的屬性 454
14.3.6自動裝配 455
14.3.7準備DTD檔案 455
14.4讀取XML檔案 457
14.4.1載入XML檔案 457
14.4.2讀取Element 460
14.4.3解析Element 462
14.4.4實現isLazy方法 464
14.4.5實現getConstructorElements方法 465
14.4.6實現getAttribute和isSingleton方法 465
14.4.7實現getAutowire方法 466
14.4.8實現getConstructorValue和getPropertyValue方法 466
14.5使用構造注入創建實例 468
14.5.1構造注入簡介 468
14.5.2使用無參數的構造器創建實例 468
14.5.3使用有參數的構造器創建實例 469
14.6實現設值注入 473
14.6.1實現非自動裝配的設值注入 473
14.6.2實現根據名字自動裝配 478
14.7實現IoC容器 480
14.7.1定義接口方法 481
14.7.2實現containsBean方法和isSingleton方法 482
14.7.3實現getBean方法 483
14.7.4為AbstractApplicationContext添加子類 488
14.7.5測試IoC容器的創建 490
14.8IoC與圖書進銷存系統的整合 495
14.8.1需要管理的對象 495
14.8.2創建數據訪問層的bean 496
14.8.3創建業務層的bean 497
14.8.4創建視圖層的bean 499
14.9本章小結 502
第15章仿QQ遊戲大廳 503
15.1遊戲大廳簡介 504
15.2編寫遊戲大廳框架 504
15.2.1確定傳輸格式 504
15.2.2建立處理類接口 506
15.2.3建立玩家類與遊戲接口 506
15.2.4編寫框架伺服器 507
15.2.5編寫框架客戶端 509
15.2.6建立登錄界面 509
15.2.7實現登錄功能 511
15.3建立五子棋遊戲大廳 512
15.3.1編寫遊戲大廳的對象 512
15.3.2伺服器創建遊戲大廳數組 514
15.3.3玩家進入遊戲大廳 515
15.3.4創建遊戲大廳界面 516
15.3.5創建玩家列表與聊天界面 519
15.3.6使用伺服器的數據創建遊戲大廳 520
15.4實現聊天功能 522
15.4.1傳送聊天信息 522
15.4.2接收聊天信息 524
15.5啟動遊戲 524
15.5.1建立遊戲界面 525
15.5.2玩家坐下 526
15.5.3實現遊戲聊天 531
15.6開始遊戲 532
15.6.1遊戲準備 532
15.6.2玩家下棋 536
15.6.3逃跑與認輸 539
15.6.4請求和棋 540
15.7五子棋遊戲大廳總結 541
15.8編寫一個測試聊天室 542
15.8.1建立聊天室界面 542
15.8.2實現聊天室 543
15.8.3將聊天室放置到框架中測試 543
15.9本章小結 544