标题：疯狂Java实战演义
图书信息
书名：疯狂Java实战演义  作者：杨恩雄  麦凯翔  编 著
李  刚  编著指导
ISBN  978-7-121-10835-8
出版日期：2010年6月 
定价：69.00元(含CD光盘1张)
开本：16开 
页码：560页
宣传语
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.1  Chessboard类    5
1.3.2  Chessman类    6
1.3.3  GobangGame类    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.1  MyMath工具类    22
2.3.2  CalService类    23
2.3.3  CalFrame类    24
2.4  MyMath工具类实现    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.6  BallService类实现    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.2  Tool的实现类AbstractTool    109
6.3.3  AbstractTool的子类    110
6.3.4  界面类ImageFrame    110
6.3.5  业务逻辑类ImageService    111
6.3.6  文件选择类
6.3.6  ImageFileChooser    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.6  ImageService类的实现    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.1  IDE工具简介    170
8.2  Java 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.3  DAO层的基类    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.1  JavaMail简介    347
12.1.2  SMTP简介    347
12.1.3  POP3简介    347
12.1.4  XStream简介    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.1  MySQL管理器原理    395
13.2  建立界面    395
13.2.1  MySQL安装目录选择界面    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.11  SQL文件的导入与导出    447
13.11.1  执行SQL文件    447
13.11.2  导出数据库与表    448
13.12  本章小结    449
第14章  自己开发IoC容器    450
14.1  IoC简介    451
14.2  使用技术简介    451
14.2.1  Java反射简介    451
14.2.2  Dom4j    452
14.2.3  JUnit    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.8  IoC与图书进销存系统的整合    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