java实现蜘蛛纸牌与实现学士学位论文.doc
北京邮电大学毕业设计 Java实现蜘蛛纸牌摘 要蜘蛛纸牌的每一代的window的系统都有,同时也时一款很受用户喜欢的休闲类游戏,很多人都喜欢玩蜘蛛纸牌。本人做的蜘蛛纸牌游戏开发理念是基于window 7操作系统中的蜘蛛纸牌游戏。利用java语言实现蜘蛛纸牌游戏的主要功能:纸牌的移动,放置,回收,重发。利用javax.swing包的类实现纸牌游戏的用户界面,通为各个菜单组件添加监视器来实现鼠标单击事件所触发的接口方法,使得用户可以单击菜单项来实现具体的功能。通过这次游戏程序的设计,让我对Java有了更深的了解和练习,这对于我以后找到工作打下了的坚实的基础。关键字:java语言;游戏的背景;功能实现Java Spider SolitaireAbstractSystem of Spider Solitaire each generation of both window, but also a very popular when users like leisure game, a lot of people like to playspider solitaire. I do Spider Solitaire game development concept is the window 7 operating system of Spider Solitaire game based on. To achieve the mainfunction of Spider Solitaire game using java language: Solitaire mobile,placement, recovery, repeat. The card game user interface using the javax.swing package class, interface method for each menu components to add monitor to achieve the mouse click event triggered, so that the user canclick on a menu item to achieve specific functions. Through the design of thegame program, let me have a deeper understanding and Practice on Java, this right after I find work to lay a solid foundation.Keywords: Java language; game background; function realizatiii目录摘 要iAbstractii1 绪论11.1 游戏开发的背景知识11.2 需要做的准备工作12 开发工具介绍22.1 java语言概述22.2 java语言的特点22.3 Eclipse简介33 可行性分析43.1 概述43.2 本系统的可行性分析53.3 系统分析53.3.1 限定问题53.3.2 确定目标63.3.3 调查研究,收集数据63.3.4 提出方案和评价标准63.3.5 方案评估63.3.6 提交可行方案64 总体设计74.1 系统设计74.2 主要模型84.3 系统功能结构图85 详细设计105.1 代码功能功能模块设计105.2 模块一的详细介绍105.2.1 主要的类105.2.2 主要的变量115.2.3 主要的方法115.3 模块二的详细介绍125.3.1 主要的类125.3.2 主要的变量125.3.3 主要的方法125.4 模块三的详细介绍135.4.1 主要类介绍135.4.2 主要变量135.4.3 主要方法135.5 模块四的详细介绍145.5.1 主要的类145.5.2 主要的变量145.5.3 主要的方法146 具体功能的设计166.1 需要实现的主要功能166.2 主要功能的代码实现176.2.1 主界面的实现176.2.2 游戏按钮的选项及其下拉列表186.2.3 纸牌移动操作196.2.4 回收纸牌操作206.2.5 帮助菜单功能226.2.6 退出模块设计237 程序的运行及发布247.1 运行程序247.2 发布程序248 软件测试258.1 简介258.2 软件测试的原则258.3 软件测试的目标268.4 软件测试内容268.5 测试的方法268.5.1 等价类268.5.2 边界值27结论33参考文献34致 谢35外文原献36中文翻译481 绪论1.1 游戏开发的背景知识蜘蛛纸牌时一款很受大家喜欢的休闲类游戏,随着科学技术的不断发展的蜘蛛纸牌的的功能也越来越强大,界面变的越来越美观,玩蜘蛛纸牌的人也很多。蜘蛛纸牌在window 2000 的时候就已经存在于系统中,一直是大家在休闲的最佳游戏。通过这次蜘蛛纸牌游戏的设计,实现蜘蛛纸牌的主要功能,不论是对游戏的了解,还是对自己设计程序的能力都是很好的提高。游戏的目标是以最少的移动次数将牌面中的十叠牌以及待发的五组,共计八副牌整理移除。当所有牌被移除整理到界面的左下方,游戏获胜。1.2 需要做的准备工作需要做的工作有学习掌握开发程序的方法,安装所需的编程的平台eclipse,了解开发工具,进行进程分析,根据得需求规格说明书设计具体的程序流程图,编写程序,修改程序,运行程序,系统调试程序、测试程序,发布程序。2 开发工具介绍2.1 java语言概述java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。Java自面世后就非常流行,发展迅速,对C+语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。现在常用的浏览器比如说360浏览器,IE浏览器中均配备有java applet。 Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能。2.2 java语言的特点java语言是一种简单的、面向对象的、分布式的、健壮的、安全的、与平台无关的、多线程、高性能的、动态程序设计语言。1.java语言简单易学的: java语言的语法与C语言和C+语言很接近,使得多数程序员很容易学习和使用java。另一方面,java丢弃了C+中很少使用的,很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地。java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2.平台无关性:平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。 3.安全性:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类classloader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 4.面向对象:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。5.分布式:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口,它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 6.健壮性:Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 7.解释型:Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 8.动态:java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。9.多线程:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子类来创建。通常有两种方法来创建线程:其一,使用型构为Thread 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制。 10.可以移植的:这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的,java运行环境是用ANSIC实现的。 11.Java语言是体系结构中立的:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。2.3 Eclipse简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM® Rational® Software Architect,它构成了 IBM Java 开发工具系列的基础。Eclipse IDE for Java EE Developers。3 可行性分析可行性分析是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性分析应具有预见性、公正性、可靠性、科学性的特点。3.1 概述 可行性研究主要内容是要求以全面、系统的分析为主要方法,经济效益为核心,围绕影响项目的各种因素,运用大量的数据资料论证拟建项目是否可行。对整个可行性研究提出综合分析评价,指出优缺点和建议。为了结论的需要,往往还需要加上一些附件,如试验数据、论证材料、计算图表、附图等,以增强可行性报告的说服力。化工项目可行性研究软件(RSGL-KX2.0),以化工行业可行性研究报告、立项申请书规范为基础,通过文本、数据灵活调用,生成符合国家规定的可行性研究报告、项目立项申请书的格式。 本软件的意义在于提高化工应用课题立项及项目生产转化时的可行性研究的准确预测,旨在克服化工科技人员在技术指标、生产销售、环境评价、成本核算、利润分配、风险评估等方面的知识欠缺,降低化工项目的投资风险。该软件的内容翔实,使用简便,只需要输入基础技术数据和基础经济数据就可得到规范的完整可行性研究报告和项目立项申请书文档。 我国可行性研究存在的主要问题,一是工程技术方案的研究论证深度不够。按照国外的通常做法,可行性研究阶段的研究深度应能达到定方案的程度,因此要求在工程技术方案论证,应达到Basic Design或Concept Design的程度,基本相当于我国的初步设计应达到的水平,应提出明确的设备清单;二是财务评价就项目论项目,这与国外利用企业理财的理论和方法进行资本预算管理,对投资项目进行投资决策和融资决策的通行做法存在重大差异,并且在经济评价方面不恰当地使用了"国民经济评价"的概念,由此引起一系列的认识误区;三是在市场分析、组织机构分析等方面与国外差别较大,研究深度严重不足;四是不重视多方案的比选及项目风险分析,或者分析的内容、深度严重不足,缺乏项目周期各阶段风险管理的统一筹划及策略论证。 可行性研究的依据: 一个拟建项目的可行性研究,必须在国家有关的规划、政策、法规的指导下完成,同时,还必须要有相应的各种技术资料。进行可行性研究工作的主要依据主要包括: 国家经济和社会发展的长期规划,部门与地区规划,经济建设的指导方针、任务、产业政策、投资政策和技术经济政策以及国家和地方法规等; 经过批准的项目建议书和在项目建议书批准后签订的意向性协议等; 由国家批准的资源报告,国土开发整治规划、区域规划和工业基地规划。对于交通运输项目建设要有有关的江河流域规划与路网规划等; 国家进出口贸易政策和关税政策; 当地的拟建厂址的自然、经济、社会等基础资料; 有关国家、地区和行业的工程技术、经济方面的法令、法规、标准定额资料等; 由国家颁布的建设项目可行性研究及经济评价的有关规定; 包含各种市场信息的市场调研报告。 可行性研究的一般要求: 可行性研究工作对于整个项目建设过程乃至整个国民经济都有非常重要的意义,为了保证可行性研究工作的科学性、客观性和公正性,有效地防止错误和遗漏,在可行性研究中, (1)首先必须站在客观公正的立场进行调查研究,做好基础资料的收集工作。对于收集的基础资料,要按照客观实际情况进行论证评价,如实地反映客观经济规律,从客观数据出发,通过科学分析,得出项目是否可行的结论。 (2)可行性研究报告的内容深度必须达到国家规定的标准,基本内容要完整,应尽可能多地占有数据资料,避免粗制滥造,搞形式主义。 (3)为保证可行性研究的工作质量,应保证咨询设计单位足够的工作周期,防止因各种原因的不负责任草率行事。具体工作周期由委托单位与咨询设计单位在签订合同时协商确定。3.2 本系统的可行性分析 (1). 投资必要性 主要根据市场调查及预测的结果,以及有关的产业政策等因素,论证项目投资建设的必要性; (2). 技术的可行性 主要从事项目实施的技术角度,合理设计技术方案,并进行比选和评价; (3). 财务的可行性 主要从项目及投资者的角度,设计合理财务方案,从企业理财的角度进行资本预算,评价项目的财务盈利能力,进行投资决策,并从融资主体(企业)的角度评价股东投资收益、现金流量计划及债务清偿能力; (4). 组织的可行性 制定合理的项目实施进度计划、设计合理组织机构、选择经验丰富的管理人员、建立良好的协作关系、制定合适的培训计划等,保证项目顺利执行; (5). 经济的可行性 从资源配置的角度衡量项目的价值,评价项目在实现区域经济发展目标、有效配置经济资源、增加供应、创造就业、改善环境、提高人民生活等方面的效益。 (6). 社会可行性 分析项目对社会的影响,包括政治体制、方针政策、经济结构、法律道德、宗教民族、妇女儿童及社会稳定性等; (7). 风险因素控制的可行性对项目的市场风险、技术风险、财务风险、组织风险、法律风险、经济及社会风险等因素进行评价,制定规避风险的对策,为项目全过程的风险管理提供依据。3.3 系统分析3.3.1 限定问题所谓问题,是现实情况与计划目标或理想状态之间的差距。系统分析的核心内容有两个:其一是进行“诊断”,即找出问题及其原因;其二是“开处方”,即提出解决问题的最可行方案。所谓限定问题,就是要明确问题的本质或特性、问题存在范围和影响程度、问题产生的时间和环境、问题的症状和原因等。限定问题是系统分析中关键的一步,因为如果“诊断”出错,以后开的“处方”就不可能对症下药。在限定问题时,要注意区别症状和问题,探讨问题原因不能先入为主,同时要判别哪些是局部问题,哪些是整体问题,问题的最后确定应该在调查研究之后。通过亲身体验总结各银行ATM提款机界面流程,得到本系统开发的主要流程界面(主要功能取款、转账、查询、修改密码等)。3.3.2 确定目标系统分析目标应该根据客户的要求和对需要解决问题的理解加以确定,如有可能应尽量通过指标表示,以便进行定量分析。对不能定量描述的目标也应该尽量用文字说明清楚,以便进行定性分析和评价系统分析的成效。3.3.3 调查研究,收集数据调查研究和收集数据应该围绕问题起因进行,一方面要验证有限定问题阶段形成的假设,另一方面要探讨产生问题的根本原因,为下一步提出解决问题的备选方案做准备。调查研究常用的有四种方式,即阅读文件资料、访谈、观察和调查。收集的数据和信息包括事实(facts)、见解(opinions)和态度(attitudes)。要对数据和信息去伪存真,交叉核实,保证真实性和准确性。3.3.4 提出方案和评价标准通过深入调查研究,使真正有待解决的问题得以最终确定,使产生问题的主要原因得到明确,在此基础上就可以有针对性地提出解决问题的备选方案。备选方案是解决问题和达到咨询目标可供选择的建议或设计,应提出两种以上的备选方案,以便提供进一步评估和筛选。为了对备选方案进行评估,要根据问题的性质和客户具备的条件。提出约束条件或评价标准,供下一步应用。3.3.5 方案评估根据上述约束条件或评价标准,对解决问题备选方案进行评估,评估应该是综合性的,不仅要考虑技术因素,也要考虑社会经济等因素,评估小组应该有一定代表性,除咨询项目组成员外,也要吸收客户组织的代表参加。根据评估结果确定最可行方案。3.3.6 提交可行方案最可行方案并不一定是最佳方案,它是在约束条件之内,根据评价标准筛选出的最现实可行的方案。如果客户满意,则系统分析达到目标。如果客户不满意,则要与客户协商调整约束条件或评价标准,甚至重新限定的问题,开始新一轮系统分析,直到客户满意为止。4 总体设计4.1 系统设计即对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。它包括:计算机配置设计、系统模块结构设计、数据库和文件设计、代码设计以及系统可靠性与内部控制设计等内容。软件功能分解属于下列软件开发中的总体设计阶段。概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。这个阶段结束,要交付概要设计说明书和设计说明,也可以合并在一起,称为设计说明书。系统设计通常应用两种方法:一种是归纳法,另一种是演绎法。应用归纳法进行系统设计的程序是:首先尽可能地收集现有的和过去的同类系统的系统设计资料;在对这些系统的设计、制造和运行状况进行分析研究的基础上,根据所设计的系统的功能要求进行多次选择,然后对少数几个同类系统作出相应修正,最后得出一个理想的系统。演绎法是一种公理化方法,即先从普遍的规则和原理出发,根据设计人员的知识和经验,从具有一定功能的元素集合中选择能符合系统功能要求的多种元素,然后将这些元素按照一定形式进行组合(见系统结构),从而创造出具有所需功能的新系统。在系统设计的实践中,这两种方法往往是并用的。 系统设计原则: (1)阶段开发原则 系统框架和数据结构全面设计,具体功能实现分阶段进行。网站的建设过程可以采取以下三期:第一期工程搭建网站的基本构架,实现电子商务网的大部分功能,初步实现网上交易;第二期工程实现网上竞价系统的全部功能;第三期工程实现网站在线的B to B 交易。 (2)易用性原则 方便上网客户浏览和操作,最大限度地减轻后台管理人员的负担,做到部分业务的自动化处理。 (3)业务完整性原则 对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性。 (4)业务规范化原则 在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性。 (5)可扩展性原则 系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展。如果存在旧有的数据库系统,则需要充分考虑兼容性。 本系统参照windows游戏蜘蛛纸牌,自己编写设计实现其功能,它具有如下一些功能: 设计一个游戏界面,包括玩牌区、发牌区和回收区。 (1)纸牌以及其背景的设定。 (2)移动纸牌。使用鼠标将较小的纸牌拖放到较大的纸牌下方,可以拖动一组纸牌,当要求这组纸牌是同一个花色,并且这一组纸牌从上到下是从大到小排列的,且不间断。 (3)回收纸牌。当某列出现同一花色,从上到下依次是从K到A的不间组合时,这组纸牌将被回收到回收区中。 (4)发牌。用鼠标单击发牌区,若发牌区还有剩余的纸牌,则将发出一叠纸牌共10张,依次添加到玩牌区的10列纸牌最下方,但要求这10列纸牌没有空白列。.若玩家不了解游戏规则可以点击帮助获得游戏方法。 (5)级别设定。点击“游戏”菜单中选取游戏难以级别,有3种级别,分别对应初级、中级、高级。 (6)退出游戏。4.2 主要模型 该游戏的开发及相关功能的实现需要在Eclipse下建立java project,同时编写Spider.java、PKCard.java、SpiderMenu.java、AboutDialog.class,另外将纸牌的图片文件保存在images文件夹中。该游戏可分为以下各项功能:(1) Spider.java 用于实现纸牌初始化、设置游戏等级以及异常处理。(2) PKCard.java用于定义纸牌的显示的各种属性以及鼠标事件的相应属性。(3) SpiderMenu.java用于添加游戏下拉菜单的各个选项,包含图形用户界面的构建,组件监听的实现,以及显示可执行操作的线程。(4) SpiderMenu.class生成Spider.class,AboutDialog.class和PKCard.class。4.3 系统功能结构图 所谓功能结构图就是将系统的功能进行分解,按功能从属关系表示的图表。管理信息系统的各子系统可以看作是系统目标下层的功能,对其中每项功能还可以继续分解为第三层、第四层甚至更多的功能。 功能结构图就是按照功能的从属关系画成的图表,图中的每一个框都称为一个功能模块。功能模块可以根据具体情况分的大一点或小一点,分解得最小功能模块可以是一个程序中的每个处理过程,而较大的功能模块则可能是完成某一个任务的一组程序。 功能结构图是对硬件、软件、解决方案等进行解剖,详细描述功能列表的结构,构成,剖面的从大到小,从粗到细,从上到下等而描绘或画出来的结构图。从概念上讲,上层功能包括 (或控制)下层功能,愈上层功能愈笼统,愈下层功能愈具体。功能分解的过程就是一个由抽象到具体、由复杂到简单的过程。图中每一个框称为一个功能模块。功能模块可以根据具体情况分得大一点或小一点。分解得最小的功能模块可以是一个程序中的每个处理过程,而较大的功能模块则可能是完成某一任务的一组程序。 系统设计是新系统的物理设计阶段。根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。图4-1 系统功能结构图5 详细设计5.1 代码功能功能模块设计 蜘蛛纸牌游戏共由4个部分组成,分别是:Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java。SpiderMenuBar.java包含名为SpiderMenuBar的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中各个组件的事件侦听。主要包括3个模块:图形用户界面的构建;组件监听接口的实现:显示可执行操作的线程。PKCard.java包含名为PKCard的public类,其主要功能为:定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现纸牌的移动等。AboutDialog.java包含名为AboutDialog的public类,其主要功能为生成蜘蛛纸牌游戏的帮助栏。Spider.java包含名为Spider的public类,其主要功能为生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括:纸牌的随机生成,位置的摆放等。 图5-1程序的总体设计流程图5.2 模块一的详细介绍SpiderMenuBar.java的功能是生成蜘蛛纸牌游戏的菜单栏。实现菜单栏中的各个组件的事件。5.2.1 主要的类 JMenuBar类、JMenu类、JMenuItem类、JRadioButton类都是设计GUI(图形用户界面)的包javax.swing中的类。可以用import引用这些类。JMenuBar类是JComponent类的子类负责创建菜单条的。即JMenuBar类的一个实例就是一个菜单条。JMenu类是JComponent类的子类负责创建菜单组的。即JMenu类的一个实例化就是一个菜单。 JMenuItem类是JMenu类的父类负责创建菜单项。即JMenuItem类的一个实例化就是一个菜单项。 JRadioButtonMenuItem类负责一个单选按钮菜单项的实现。JRadioButtonMenuItem 是属于一组菜单项中的一个菜单项,该组中只能选择一个项。 ButtonGroup 类用于为一组按钮创建一个多斥作用域。使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。 SpiderMenuBar类是此文件的一个主类是JMenuBar的子类。Show类是Thread的子类用于创建线程。5.2.2 主要的变量 jNewGame、jHelp变量分别是JMenu类创建的“游戏”、“帮助”菜单。 jItemAbout、jItemOpen、jItemPlayAgain、jItemExit、jItemValid变量分别是JMenuItem 类创建的“关于”、“开局”、“重新发牌”、“退出”、“显示可行操作”菜单项。 jRMItemEasy、jRMItemNormal、jRMItemHard变量分别是JRadioButtonMenuItem类创建的“简单:单一花色”、“中级:双花色”、“高级:四花色”的单选按钮菜单项。 group变量是ButtonGroup 类创建的一组按钮选择对象。spider变量是Spider类创建的对象用于主界面窗口的实现。将在Spider.java文件中介绍。5.2.3 主要的方法public JMenuBar()创建新的菜单栏。public JMenu(String text)构造一个新菜单,用提供的字符串作为其文本。public JMenuItem(String text)创建带有指定文本的菜单项。public JRadioButtonMenuItem(String text)创建一个带文本的单选按钮菜单项。public ButtonGroup()创建一个新的单选按钮对象组。 public void add(MenuItem item)向菜单增加由参数item指定的菜单项对象。public void add(AbstractButton b)将单选按钮添菜单项加到组中。public void add(JMenu c)将指定的菜单添加加到菜单栏中。public void addSeparator()将新分隔符追加到菜单的末尾。所需要添加的事件处理的接口方法将在后来的模块中进行介绍。事件源即能够产生的事件的对象。监视器用于对事件源进行监视以便对发生的事件做出处理。事件源通过调用相应的方法将某个对象作为自己的监视器。这个方法是addActionListen(ActionListener listen)该方法中的参数是ActionListener类型的接口。因此必须用ActionListener接口的类创建的对象传递给该方法的参数,使得该对象成为事件源的的监视器。监视器负责调用特定的方法处理事件,创建监视器的类必须提供处理事件的特定的方法,即实现接口方法。public void addMenuListener(MenuListener l)添加菜单事件的侦听器。 void menuSelected(MenuEvent e)选择某个菜单时调用。 void menuDeselected(MenuEvent e)取消选择某个菜单时调用。 void menuCanceled(MenuEvent e)取消菜单时调用。5.3 模块二的详细介绍PKCard的功能是定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现了纸牌的移动等。5.3.1 主要的类JDialog类是创建对话框窗口的主要类。可以使用此类创建自定义的对话框,或者调用 JOptionPane 中的多个类方法来创建各种标准对话框。Jpanel类是一个面板类负责创建一个面板容器,再向这个面板添加组件,然后将面板添加到底层容器中。JTabbedPane类负责创建一个组件,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。JTextArea类负责创建一个显示纯文本的多行区域。它作为一个轻量级组件Container类负责创建一个容器对象,此容器可以包含其它组件。AboutDialog类是JDialog类的子类,负责创建一个显示对话框。5.3.2 主要的变量jMainPane、jPanel1、jPanel2、变量是JPane1创建的面板容器。jt1、jt2是JTextArea类创建的文本区对象。jTabbedPane是JTabbedPane类创建的选项卡窗格对象。c变量是Container类创建的容器。5.3.3 主要的方法public JTabbedPane()创建一个具有默认的 JTabbedPane.TOP 选项卡布局的空 TabbedPane.public JDialog()创建一个没有标题并且没有指定 Frame 所有者的无模式对话框。一个共享的、隐藏的窗体将被设置为该对话框的所有者。public JPanel()创建具有双缓冲和流布局的新面板容器。public JTextArea(String text)构造显示指定文本为text的新的文本区。public void setTittle(String s)设置一个标题为s的对话框。public void setSize(int width,int heigth)创建宽为width,高位heigth大小的对话框。public void setResizable(boolean b)设置对话框是否可调整大小。b为true时,对话框可调整大小。public void setDefaultCloseOperation(int operation)该方法用来设置单机窗体右上角的关闭图标后,程序会做出怎样的处理。operation取DISPOSE_ON_CLOSE时/隐藏当前窗口,并释放窗体所占