Java综合实验设计
JAVAweb实验课程设计

JAVAweb实验课程设计一、课程目标知识目标:1. 让学生掌握JAVAweb的基本概念,理解其体系结构及工作原理。
2. 学会使用JAVA语言进行Web编程,掌握Servlet和JSP技术,并能运用到实际项目中。
3. 了解常用的数据库连接技术,掌握JDBC在Web应用中的使用方法。
技能目标:1. 培养学生独立设计和开发小型JAVAweb应用的能力。
2. 提高学生在Web项目中解决问题的能力,包括调试和优化代码。
3. 培养学生团队协作和沟通能力,能够与团队成员共同完成项目。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发其学习热情。
2. 培养学生严谨、认真、负责的学习态度,养成良好的编程习惯。
3. 培养学生面对问题积极思考、勇于探索的精神,提高学生的创新意识。
课程性质:本课程为实验课程,注重理论与实践相结合,以项目为导向,培养学生的实际动手能力。
学生特点:学生已具备一定的JAVA基础,对Web技术有一定了解,但实践经验不足。
教学要求:教师需采用案例教学、任务驱动等方法,引导学生主动参与,注重实践,提高学生的动手能力。
同时,关注学生的个性化发展,鼓励学生创新思维,培养团队协作精神。
通过课程学习,使学生能够达到上述课程目标,为后续专业课程打下坚实基础。
二、教学内容1. JAVAweb基本概念:介绍Web应用体系结构,理解B/S架构,掌握HTTP 协议基础。
2. Servlet技术:学习Servlet的生命周期、请求和响应处理、会话管理、过滤器、监听器等。
3. JSP技术:掌握JSP页面元素的编写,理解JSP的内置对象,学习JSP标签和EL表达式。
4. 数据库连接技术:学习JDBC的使用,掌握数据库的连接、SQL语句执行、结果集处理等。
5. 常用框架与技术:了解Struts2、Spring、Hibernate等常用框架的基本原理和使用方法。
6. 实践项目:设计并实现一个简单的在线图书管理系统,涵盖用户注册、登录、图书查询、借阅等功能。
java语言程序设计实验报告

java语言程序设计实验报告
《Java语言程序设计实验报告》
实验目的:通过本次实验,学生将学会使用Java语言进行程序设计,掌握Java
语言的基本语法和编程技巧,并能够编写简单的Java程序。
实验内容:本次实验主要包括以下内容:1. Java语言的基本语法和数据类型;2. Java程序的输入输出;3. Java程序的流程控制;4. Java程序的函数和类的定义;
5. Java程序的异常处理等。
实验步骤:1. 阅读相关的Java语言教材和资料,了解Java语言的基本概念和
语法规则;2. 编写简单的Java程序,包括输入输出、流程控制、函数和类的定
义等;3. 调试和运行编写的Java程序,查看程序的运行结果;4. 对程序进行优
化和改进,提高程序的效率和性能。
实验结果:通过本次实验,学生将能够熟练掌握Java语言的基本语法和编程技巧,能够编写简单的Java程序,并能够运用Java语言解决实际的问题。
实验总结:通过本次实验,学生将对Java语言有了更深入的了解,掌握了Java
语言的基本概念和编程技巧,能够独立编写简单的Java程序。
同时,学生也将
培养了良好的编程习惯和解决问题的能力,为今后的学习和工作打下了良好的
基础。
结语:通过本次实验,学生将能够熟练掌握Java语言的基本语法和编程技巧,
为今后的学习和工作打下了良好的基础。
同时,也希望学生能够在今后的学习
和工作中不断提高自己的编程能力,为科技创新和社会发展做出更大的贡献。
Java程序设计实验指导书(答案)

第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
JAVA实验报告

JA V A实验报告实验一 Java开发环境及基本语法一、实验目的1、掌握常用的Java 集成开发环境的使用,特别是Eclipse 和NetBeans。
2、掌握Java 基本语法,重点是面向对象的思想和语法。
3、掌握控制台下(应用程序)的输入输出方法,作为后续部分实验的基础。
二、实验类型设计型。
三、实验内容1、打开实验室计算机上的集成开发环境Eclipse 或NetBeans(重点是Eclipse)了解开发软件的各个菜单功能。
会创建java 项目(Project),会编辑和编译、运行项目代码。
、。
2,验证和学习所给的几个例子程序及其讲解。
然后自己编写一个至少由一个类构成的Java 程序,其功能是在运行后,能接收用户输入一个学生的姓名以及java 课的成绩(百分制),并输出对该学生成绩是否达到60 分的及格分的判断(可使用if 语句)。
例如,输入学生姓名李明,然后输入成绩50,则输出“ 李明的成绩为不及格”。
3、编写一个程序来表示长方体的长宽高等数据并有计算体积的函数可供调用,长方体类从矩形类继承而来。
程序运行时能接受输入任意的 3 个数作为长方体的长、宽和高,然后能够输出所输入的长宽高及所计算出的体积。
注意不能把代码全部写在main 函数里面,不能直接输出长宽高的乘积。
代码如下;第一个import java.util.Scanner;public class Test{public static void main(String[] args) {String str; // 定义一个字符串变量strint i; // 定义一个整型变量iScanner sc = new Scanner(System.in); // 定义一个Scanner对象,从System.in接受输入System.out.print("输入学生姓名");str = sc.next(); // 等待用户输入任意一个字符串,它会被存到str中System.out.println("姓名:" + str); // 输出字符串strSystem.out.print("输入学生的分数:");i = sc.nextInt(); // 等待用户输入任意一个整数,它会被存到i中if(i<60)System.out.print("他的JAVA不及格,成绩是" + i );elseSystem.out.println("他的JAVA成绩是:" + i); // 输出整数i}}第二个import java.util.Scanner;public class wwh {public static void main(String[] args) {int Long; // 矩形的长int wide; // 矩形的宽int High; // 长方体的高S canner sc = new Scanner(System.in);S ystem.out.print("输入长");L ong = sc.nextInt();S ystem.out.print("输入宽");w ide=sc.nextInt();S ystem.out.print("输入高");H igh=sc.nextInt();T j T=new Tj(Long,wide,High);T.show1();}}class Vehicle{int Long; // 矩形的长int wide; // 矩形的宽Vehicle(int Long,int wide){this.Long=Long;this.wide=wide;}int getArea(){r eturn Long*wide;}void show(){System.out.println("长:"+Long);System.out.println("宽:"+wide);System.out.println("矩形的面积为; "+this.getArea()); }} //class Tj extends Vehicle{int High; // 载人数Tj(int Long,int Wide,int High){super(Long,Wide); // 调用父类的构造函数,对从父类继承而来的成员变量进行初始化this.High=High;}int getTiji(){r eturn super.getArea()*High;}void show1(){s uper.show();// 调用父类方法S ystem.out.println("长方体的高为:"+High);System.out.println("长方体的体积;"+this.getTiji());}}实验二系统类和数组一、实验目的1、通过字符串处理类的应用,掌握系统类的使用方法。
java语言程序设计实验报告

java语言程序设计实验报告篇一:Java实验八报告《Java语言程序设计》实验报告学生姓名:郭倩班级:信息112学号:201152275208实验地点:经管实验中心证券实验室指导教师:赵利平实验日期:实验环境:Windows 2000+JDK1.61. 实验目的(1)理解子类派生的概念(2)学习创建子类对象(3)掌握方法覆盖的使用2.实验内容(1)设计三个类:完成实验教材P52页程序清单4-2;(2)通过编制一个程序来加深对嵌套类、内部类和局部类的理解:完成实验教材P56页程序清单4-3;2. 实验过程报告撰写具体要求:上述实验内容要求写出源代码及运行结果。
实验内容(1)://Polymorphism.abstract class Student{final static int CourseNo=3;String name;String type;int[] courses;String courseGrade;public Student(String name){=name;courses=new int[CourseNo];courseGrade=null;}public abstract void calculateGrade();public String getName(){return name;}public String getType(){return type;}public String getCourseGrade(){return courseGrade;}public int getCourseScore(int courseNumber){return courses[courseNumber];}public void setName(String name){=name;}public void setType(String type){this.type=type;}public void setCourseScore(int courseNumber,int courseScore){this.courses[courseNumber]=courseScore;}}class Undergraduate extends Student{public Undergraduate(String name){super(name);type="本科生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=80&&average<100) coursegrade="优秀" else="" average="">=70&&average<80) coursegrade="良好" else="" average="">=60&&average<70) coursegrade="一般" else="" average="">=50&&average<60) courseGrade="及格";else courseGrade="不及格";}}class Postgraduate extends Student{public Postgraduate(String name){super(name);type="研究生";}public void calculateGrade(){int total=0;double average=0;for(int i=0;i<CourseNo;i++){total+=courses[i];};average=total/CourseNo;if(average>=90&&average<100) coursegrade="优秀" else="" average="">=80&&average<90) coursegrade="良好"else="" average="">=70&&average<80) coursegrade="一般" else="" average="">=60&&average<70) courseGrade="及格";else courseGrade="不及格";}}public class Polymorphism{public static void main(String[] args){Student[] students=new Student[5];students[0]=new Undergraduate("陈建平");students[1]=new Undergraduate("鲁向东");students[2]=new Postgraduate("匡晓华");students[3]=new Undergraduate("周丽娜");students[4]=new Postgraduate("梁欣欣");for(int i=0;i<5;i++){students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for(int i=0;i<5;i++){students[i].calculateGrade();}System.out.println("姓名"+" 类型"+" 成绩");}}System.out.println("-------------------------"); for(int i=0;i<5;i++){ System.out.println(students[i].getName()+" "+students[i].getType()+" "+students[i].getCourseGrade()); }(1) 都有(2) Student[] students=new Student[5];(3) Student是抽象的,不能用new操作符创建抽象类的实例。
java课程设计实验报告

j a v a课程设计实验报告 Last updated on the afternoon of January 3, 2021Java课程设计实验报告实验题目:打字游戏小程序专业:计算机科学与技术系班级:1202班成员:Java课程设计(打字游戏小程序)一、课程设计目的经过一学期的java学习,能灵活运用书中和实验中所学习的各类知识和技巧,并且能在程序开发中得以很好的运用和发挥。
在以后的学习和工作中,可以从中获取很好的经验,并且锻炼自己开发程序和创新的意识。
二、课程设计内容1.课程设计简介设计的是一个打字的小游戏,屏幕上不断地有英文字母下落,键盘输入字母,屏幕上与输入的字母形同的就会消失,并计分,如果有没有消去的字母掉到屏幕底,将扣分。
2.设计说明因为要进行键盘操作,所以引用了event包,还要注册事件监听。
字母是随机产生的,又要用。
注册了线程。
还要对窗口定义坐标,防止字母出现在同一位子。
并且通过一位数组来给随机出现的字母做坐标定义。
主要通过一位数组来控制字母的坐标,并且通过字母坐标的改变来对整个游戏的流程进行控制。
3.设计流程图4.实现功能随机产生字母,运用了键盘操作当按对屏幕中出现的字母时,该字母全部消失,并且在分数上相应的增加或减少。
5.详细设计(源代码)1)packageDownCharGame;importimportimport/***下落的字母实体类*@authorshenbf**/publicclassCharEntity{raw(g);}etY()>=480){etX((int)()*580)+30);chs[i].setY(0);chs[i].setColor(newColor((int)()*256),(int)()*256),(int)()*256)));chs[i].setCh((char)(65+(int)()*26)));}chs[i].down();}repaint();tart();}publicvoidkeyTyped(KeyEvente){}publicvoidkeyPressed(KeyEvente){}publicvoidkeyReleased(KeyEvente){etCh()||key==chs[i].getCh()+32){etY()<chs[i].getY()){maxYindex=i;}}}}etX((int)()*580)+30);chs[maxYindex].setY(0);chs[maxYindex].setCh((char)(65+(int)()*26)));}}}三、运行结果截图:四、实验总结:此程序运用了一维数组,且随机性。
Java课程设计实验报告及全部源码流程图

课程设计一、实验目的1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。
2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。
二、实验要求1.问题描述准确、规范。
2.程序结构合理,调试数据准确、有代表性.。
3.界面布局整齐,人机交互方便。
4.输出结果正确。
5.正确撰写实验报告。
三、实验内容编写一个GUI程序实现日历的功能。
一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。
可以实现显示时钟,时钟能进行整点报时。
可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。
四、实验步骤1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。
2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。
3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。
4. 根据实验结果,写出合肥工业大学实验报告。
实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。
5.详细的上机实验步骤见任务分工及程序设计进度表。
五、实验结果经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
Java程序设计实验指导

附一、实验报告填写方法附1.1 实验开发环境1.硬件:Intel P42.4G/256M/40G PC机一套;2.软件:Windows XP+j2sdk1.5.0+JCreator Pro3.1.0+(MS Access 2000)附1.2实验过程要求1.在上课的同时,将每个实验预习的每个例题直接完成在实验指导书上;2.在实验之前,将实验要求的程序写在草稿本上;3.每次实验之前需要把实验指导书和写有程序的草稿纸带上,以备检查,否则不能进入实验室。
4.实验过程中,不能做与实验无关的事情(如:打游戏、看其他书籍),否则本次实验成绩记0分,在遇到问题的时候举手提问,同学之间交流的声音不可太大。
附1.3实验报告内容填写1.第1页:填写(1)实验目的、(2)实验要求2.第2页~第3页:填写(3)实验程序源代码3.第4页:填写(4)实验运行结果、(5)实验总结实验一:Java基础程序设计Java程序设计语言同大多数程序设计语言一样,具有一些基本特性。
本节实验主要练习Java编程语言的这些基本特性,如Java中的简单数据类型,运算符和表达式,这是学习Java语言必须经过的基础阶段。
掌握了本节实验所讲述的内容后,应该能够对Java程序的构成有一个基本的理解,能够灵活运用Java语言提供的各种数据类型和运算符。
学好Java语言必须具备扎实的语言基础,这对后续学习是很有必要的。
Java程序通过控制语句来执行程序流,完成一定的任务。
程序流是由若干个语句组成的,语句可以是单一的一条语句,也可以是用大括号{}括起来的一个复合语句。
Java中的控制语句主要有分支语句(if-else,switch).循环语句(while,do-while,for)与程序转移有关的跳转语句(break,continue,return)。
本节实验将学习如何控制程序的流程,使程序实现不同功能。
1.1实验目的:1.掌握Java语言的数据类型。
2.掌握Java语言的运算符和表达式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合实验报告:滑板反射小球游戏专业班级:遥感科学与技术学号: 20133350姓名:易乐安日期: 2015年6月30日一、程序设计报告小球在窗口四壁弹射(虚线表示弹射的轨道)。
左右移动滑板,接住小球弹射,如果没有接住,则游戏失败一次。
要求:1. 自拟设计记分方法,和界面的其它部分;2. 滑板用键盘控制左右移动;3. 设置难度调节开关,允许游戏过程中改变这一设置,以调节小球运行速度,速度快,则难度增加。
4. 小球在滑板上弹射时,允许一定量的随机变化弹射角度,以实现一定的不确定性。
使用模块:对系统包结构、文件结构列表说明,如表2-1、2-2所示。
表2-1包名作用Java.awt.Insets包含用于创建用户界面和绘制图形图像的所有类Java.awt.event.ActionEvent定义了动作的类Java.awt.event.ActionListener包含用于创建用户界面和绘制图形图像的所有的类Java.awt.event.MouseEvent把类全部导进来Javax.swing.JOptionPane有助于方便地弹出要求用户提供或向其发出通知表2-2文件名作用GameUI.java程序的主窗体,负责窗口和菜单的绘制以及线程的调用。
MyThread.Java游戏的线程,主要负责小球的绘制和判断小球是否被接住,以及记录更新分数。
MyListener.java监听鼠标位置移动的监听器。
用来捕获鼠标的移动和鼠标的当前位置,同时这个类负责板子的绘制与更新。
定义界面:设置标题设置大小设置关闭是退出程序设置打开窗体时在屏幕中间显示设置窗体的流式布局管理器设置窗体背景颜色创建文本标签对象设置文本标签前景颜色创建进度条对象创建按钮对象创建菜单条对象创建菜单对象创建菜单选项对象 创建单选选项 创建一个按钮组主要算法描述:MyThread 继承于Thread ,使用一个单独的线程进行小球的绘制。
小球的绘制和滑板的绘制大同小异,都是使用java.awt.Graphics 进行绘制的。
MyThread 还兼顾着进行小球是否被接住的判断。
主要是通过返回的板子的坐标和小球的坐标来判断小球是否在板子上方的一定范围里,如果在,则判断为接住,否则,为掉落分层结构及调用关系说明进入游戏画面根据球出现的位置,移动鼠标使滑板到相应的位置的上方,测试可以接多少个球。
若滑板接到一个球,则玩家就得一分,若接不到球,就游戏结束。
先选择游戏的难度,有简单,中等和困难。
游戏结束,选择否,退出游戏。
游戏结束,选择是,重新开始新的游戏。
二、程序测试报告用例:关键代码分析public void run() {drawOval();}public void drawOval() {UI.text_field.setText(count + "分");//start = System.currentTimeMillis();while (isFinish) {while (isPause) {synchronized(this.g){g.setColor(java.awt.Color.black);g.fillOval(x, y, width, height);y += y1;getColors();g.setColor(color);g.fillOval(x, y, width, height);}int x2 = listener.getX();if (y < 90) {y1 = 5;}if (y > 595 && x > x2 && x < x2 + 100) {this.fadeOval();count += 1;UI.text_field.setText(count + "分");y1 = 5;y = 100;java.util.Random ran = new java.util.Random();x = ran.nextInt(600) + 10;}if (y > 630) {if (isexist) {isAgain();}stopThread();}try {Thread.sleep(speed);} catch (Exception ef) {ef.printStackTrace();}}}}小球的绘制其实就是不断的绘制一个圆形,只不过圆形的y坐标在不停的变化。
难度的控制是通过主程序传入的speed参数来控制的,这个参数用于Thread.sleep(speed),很显然,当这个参数与小球下落的速度成反比。
通过调用UI.text_field.setText()来更新主窗口上的分数。
结果:结论:一个好的算法可以让你的程序更健壮,编写的代码量更少,处理异常一直是JAVA里的常事,通过试验,让我对基础的知识更加深入了解,也对更改代码错误有了一定的提升,能看的懂错误的代码错在哪里,并进行修改,使其正确。
这个游戏只是一个简单的接球游戏,如果可以做的更好,就会更好的训练人们的集中力和反应速度,敏捷的做出正确的判断。
附录:源程序代码:import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/游戏界面类/public class GameUI extends javax.swing.JFrame {private static GameUI UI;private java.awt.Graphics g;private MyListener ml;public javax.swing.JLabel text_field;public javax.swing.JProgressBar pBar;private String command;public java.util.ArrayList<MyThread> list = new java.util.ArrayList<MyThread>();private javax.swing.JToggleButton button;public static void main(String args[]){UI = new GameUI();UI.initUI();}/ 初始化窗体的方法/public void initUI() {// 设置标题this.setTitle("接球");// 设置大小this.setSize(610, 635);// 设置关闭是退出程序this.setDefaultCloseOperation(3);// 设置打开窗体时在屏幕中间显示this.setLocationRelativeTo(null);// 设置窗体的流式布局管理器this.setLayout(new java.awt.FlowLayout());// 设置窗体背景颜色this.getContentPane().setBackground(java.awt.Color.black);// 创建文本标签对象text_field = new javax.swing.JLabel();javax.swing.JLabel lable = new javax.swing.JLabel("时间:");// 设置文本标签前景颜色lable.setForeground(java.awt.Color.red);text_field.setForeground(java.awt.Color.red);// 创建进度条对象pBar = new javax.swing.JProgressBar(0, 330);// 创建按钮对象button = new javax.swing.JToggleButton();button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));button.setActionCommand("暂停");// 通过匿名内部类来创建动作监听器java.awt.event.ActionListener button_listener = new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {String com = e.getActionCommand();if (com.equals("暂停")) {button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(new javax.swing.ImageIcon("images/start.gif"));button.setActionCommand("继续");for (int i = 0; i < list.size(); i++) {list.get(i).PauseThread();}}if (com.equals("继续")){button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));button.setActionCommand("暂停");for (int i = 0; i < list.size(); i++) {list.get(i).ContinueThread();}}}};button.addActionListener(button_listener);this.add(button);this.add(lable);this.add(pBar);this.add(text_field);// 的到菜单条javax.swing.JMenuBar bar = creatMenuBar();// 为窗体设置菜单条this.setJMenuBar(bar);// 设置窗体的可见性this.setVisible(true);}/创建菜单条的方法/public javax.swing.JMenuBar creatMenuBar() {// 创建菜单条对象javax.swing.JMenuBar bar = new javax.swing.JMenuBar();// 创建菜单对象javax.swing.JMenu menu_menu = new javax.swing.JMenu("菜单");javax.swing.JMenu difficulty_menu = new javax.swing.JMenu("难度");javax.swing.JMenu help_menu = new javax.swing.JMenu("帮助");// 创建菜单选项对象javax.swing.JMenuItem star_item = new javax.swing.JMenuItem("开始");javax.swing.JMenuItem exit_item = new javax.swing.JMenuItem("退出");javax.swing.JMenuItem help_item = new javax.swing.JMenuItem("游戏说明"); javax.swing.JMenuItem about_item = new javax.swing.JMenuItem("关于"); // 创建单选选项javax.swing.JRadioButtonMenuItem easy_item = new javax.swing.JRadioButtonMenuItem("简单");javax.swing.JRadioButtonMenuItem middle_item = new javax.swing.JRadioButtonMenuItem("中等");javax.swing.JRadioButtonMenuItem hard_item = new javax.swing.JRadioButtonMenuItem("困难");// 创建一个按钮组javax.swing.ButtonGroup group = new javax.swing.ButtonGroup();// 将单选按钮添加到按钮组中group.add(easy_item);group.add(middle_item);group.add(hard_item);// 将单选按钮添加到菜单中difficulty_menu.add(easy_item);difficulty_menu.add(middle_item);difficulty_menu.add(hard_item);// 通过匿名内部类来创建动作监听器ActionListener listener = new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {command = e.getActionCommand();// 如果选择开始,则创建线程对象if (command.equals("开始") && list.size() == 0) {creatBall(20, 1);}// 如果选择退出按钮,则退出程序if (command.equals("退出")) {System.exit(0);}// 如果选择简单按钮if (command.equals("简单") && list.size() == 0) {creatBall(20, 1);}// 如果选择中等按钮if (command.equals("中等") && list.size() == 0) {creatBall(50, 2);}if (command.equals("困难") && list.size() == 0) {creatBall(40, 2);}if (command.equals("游戏说明")) {javax.swing.JOptionPane.showMessageDialog(null,"用挡板接球,如果接不住,就算输了……\n游戏可以选择难度,包括简单、中等、困难");}if (command.equals("关于")) {javax.swing.JOptionPane.showMessageDialog(null, " 滑板反射小球游戏\n制作人:易乐安");}}};// 添加动作监听器star_item.addActionListener(listener);exit_item.addActionListener(listener);easy_item.addActionListener(listener);middle_item.addActionListener(listener);hard_item.addActionListener(listener);help_item.addActionListener(listener);about_item.addActionListener(listener);// 将菜单选项对象添加到菜单对象上menu_menu.add(star_item);menu_menu.add(exit_item);help_menu.add(help_item);help_menu.add(about_item);// 将菜单对象添加到菜单条上bar.add(menu_menu);bar.add(difficulty_menu);bar.add(help_menu);// 返回菜单条对象return bar;}/创建线程对象的方法/public void creatBall(int speed, int num) {java.util.Random ran = new java.util.Random();if (ml == null) {g = UI.getGraphics();ml = new MyListener(g);UI.addMouseListener(ml);UI.addMouseMotionListener(ml);}for (int i = 0; i < num; i++) {int x = ran.nextInt(600) + 10;int y = ran.nextInt(300) + 100;MyThread th = new MyThread(g, ml, UI, x, y, speed); list.add(th);th.start();}}/得到命令的方法/public String getCommand() {return command;}}import java.awt.Color;import javax.swing.JOptionPane;/线程类/public class MyThread extends Thread {private int width = 20, height = 20;private int x, y;private java.awt.Graphics g;private GameUI UI;private boolean isexist = true;private MyListener listener;private int speed;private int x1 = 12, y1 = 12;private long start, end;private long last_time;private int response;private boolean isFinish = true;private boolean isPause = true;private java.util.ArrayList<MyThread> list;private float value = 320;private java.awt.Color color = java.awt.Color.blue;/重写构造器/public MyThread(java.awt.Graphics g, MyListener listener, GameUI UI, int x, int y, int speed) {this.g = g;this.UI = UI;this.x = x;this.y = y;this.speed = speed;this.listener = listener;}/ (non-Javadoc)重写run的方法/public void run() {drawOval();}/创建线程的方法/public void drawOval() {start = System.currentTimeMillis();while (isFinish) {while (isPause) {synchronized(this.g){// 画一个圆g.setColor(java.awt.Color.black);g.fillOval(x, y, width, height);x += x1;y += y1;getColors();g.setColor(color);g.fillOval(x, y, width, height);}int x2 = listener.getX();if (x > 580) {x1 = -12;}if (x < 10) {x1 = 12;}if (y < 90) {y1 = 12;}if (y > 595 && x > x2 && x < x2 + 100) {y1 = -12;}if (y > 630) {if (isexist) {isAgain();}stopThread();}try {Thread.sleep(speed);value -= 0.1;} catch (Exception ef) {ef.printStackTrace();}// 将前一次画的清除掉end = System.currentTimeMillis();last_time = 100 - (end - start) / 1000;UI.text_field.setText(last_time + "s");UI.pBar.setValue((int) value);if (last_time == 0) {list = UI.list;for (int j = 0; j < list.size(); j++) {// 停在线程,并且去掉最后一个圆list.get(j).stopThread();list.get(j).fadeOval();}stopThread();showDialog();}}}}/线程结束时消去最后一个圆的方法/public void fadeOval() {g.setColor(java.awt.Color.black);g.fillOval(x, y, width, height);}/重来对话框的处理方法/public void isAgain() {isexist = false;list = UI.list;System.out.println(list.size());for (int j = 0; j < list.size(); j++) {// 停在线程,并且去掉最后一个圆list.get(j).stopThread();list.get(j).fadeOval();}Object[] options = { "是", "否" };String command = UI.getCommand();response = JOptionPane.showOptionDialog(null,"坚持就是胜利,是否再来一次?", null, JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, null, options, null);System.out.println(response);if (response == 0) {if (command.equals("简单") || command.equals("开始")) {AgainThread();if (list.size() != 0) {// 现将原来的对象从队列中移除 list.removeAll(list);UI.creatBall(20, 1);}}if (command.equals("中等")) {AgainThread();if (list.size() != 0) {list.removeAll(list);UI.creatBall(50, 2);}}if (command.equals("困难")) {AgainThread();if (list.size() != 0) {list.removeAll(list);UI.creatBall(40, 2);}}}// 如果点击关闭,则将线程对象从队列中移除 if (response == -1 || response == 1) { list.removeAll(list);}}/停止线程的方法/public void stopThread() {isFinish = false;isPause = false;}/暂停线程的方法/public void PauseThread() {isPause = false;}/继续线程的方法/public void ContinueThread() {isPause = true;}/是否重来的方法/public void AgainThread() {isFinish = true;isPause = true;}public void getColors() {if (x % 2 == 0 && y % 2 == 0) {color = java.awt.Color.green;}if (x % 2 == 0 && y % 2 != 0) {color = java.awt.Color.red;}if (x % 2 != 0 && y % 2 != 0) {color = java.awt.Color.orange;}if (x % 2 != 0 && y % 2 != 0) {color = java.awt.Color.yellow;}}public void showDialog() {javax.swing.JOptionPane.showInputDialog("好样的,你是真的高手,\n恭喜你\n请输入您的大名");}}import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import javax.swing.JFrame;/鼠标监听器的类/public class MyListener extends java.awt.event.MouseAdapter { private java.awt.Graphics g;private int x = 5, y = 620;private int width = 100, height = 10;public MyListener(java.awt.Graphics g) {this.g = g;}public void mouseMoved(MouseEvent e) {// 设置画布对象颜色synchronized (this.g) {g.setColor(java.awt.Color.black);g.fillRect(x, y, width, height);x = e.getX();g.setColor(java.awt.Color.green);g.fillRect(x, y, width, height);}}/得到x的方法/public int getX() {return x;}}。