java程序设计实验五
java实验5图形用户界面设计试验
java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。
容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。
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语言的基本语法和编程技巧,
为今后的学习和工作打下了良好的基础。
同时,也希望学生能够在今后的学习
和工作中不断提高自己的编程能力,为科技创新和社会发展做出更大的贡献。
005-实验五 继承和接口(实验报告内容)
实验五继承和接口(实验报告)一、目的1.掌握Java语言继承机制。
二、实验内容定义一个超类,定义一个子类,实例化子类对象,调用超类的属性和方法,体会继承机制。
三、实验环境JDK1.6+dos环境四、实验原理1.继承机制五、实验步骤1、定义一个Person类,有属性姓名,年龄,性别。
Person具有吃饭,睡觉的行为。
定义一个Student类继承Person类,Student具有学习,看书的行为。
定义一个接口,能够输出自己的基本信息。
完成所设计的类的测试。
class Person{private String name;private int age;private String sex;public void setName( String name){ =name;}public String getName( ){return name;}public void setAge( int age){this.age=age;}public int getAge( ){return age ;}public void setSex( String sex){this.sex=sex;}public String getSex( ){return sex;}public void tell01(){System.out.println("会吃饭,能睡觉"); }public void tell02(){System.out.println("姓名:"+this.getName()+"性别:"+this.getSex()+"年龄:"+this.getAge());}}interface A{public void print01();public void print02();}class Student extends Person implements A{private int number;public void setNumber(int number){this.number=number;}public int getNumber( ){return number;}public void tell03(){System.out.println("姓名:"+this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学号:"+this.getNumber());}public void tell04(){System.out.println("爱学习,喜欢看书");}public void print01(){System.out.println("巴黎下着小雨!!!");}public void print02(){System.out.println("吉大正在飚雨!!!");}}public class mytest01{public static void main(String args[]){Student stu = new Student();stu.setName("张三");stu.setAge(20);stu.setSex("男");stu.setNumber(2011);stu.tell01();stu.tell03();stu.tell04();stu.print01();stu.print02();}}六、实验小结。
java编程实验报告
java编程实验报告Java编程实验报告引言:Java是一种广泛应用于软件开发领域的高级编程语言,具有跨平台、面向对象、安全性高等特点。
本篇文章将介绍我在Java编程实验中的实践和收获。
实验一:Hello World程序在本实验中,我学习了如何使用Java编写一个简单的Hello World程序。
通过这个实验,我了解了Java的基本语法和程序结构。
在编写过程中,我发现Java的语法规范相对严格,需要注意语句的结束符号和代码的缩进。
通过运行程序,我成功输出了"Hello World"这个简单的字符串,这让我对Java编程的基本流程和语法有了更深入的了解。
实验二:变量与运算符在本实验中,我学习了Java中的变量和运算符的使用。
通过编写程序,我实现了对不同类型的变量进行声明和赋值,并进行基本的运算操作。
在这个过程中,我发现Java的变量需要先声明后使用,而且在进行运算时需要注意数据类型的匹配。
通过这个实验,我对Java中的变量和运算符有了更深入的理解。
实验三:条件语句与循环结构在本实验中,我学习了Java中的条件语句和循环结构的使用。
通过编写程序,我实现了对不同条件进行判断,并根据不同的条件执行相应的操作。
同时,我还学习了循环结构的使用,通过循环语句实现了对一段代码的重复执行。
在这个实验中,我发现条件语句和循环结构是Java编程中非常重要的部分,能够帮助程序实现更复杂的逻辑。
实验四:数组和字符串在本实验中,我学习了Java中数组和字符串的使用。
通过编写程序,我实现了对数组和字符串的声明、赋值和操作。
在这个过程中,我发现Java中的数组和字符串是一种非常方便的数据结构,能够帮助程序处理大量的数据。
通过这个实验,我对Java中数组和字符串的使用有了更深入的了解。
实验五:面向对象编程在本实验中,我学习了Java中的面向对象编程的基本概念和使用。
通过编写程序,我实现了对类的定义、对象的创建和方法的调用。
实验报告java程序设计
实验报告java程序设计一、引言本次实验是针对Java程序设计的实践性活动。
Java是一种广泛应用于各种平台的编程语言,具有跨平台、面向对象、安全性高等特点。
通过本次实验,我们将学习如何利用Java语言进行程序设计,并进一步熟悉Java的基本语法和面向对象的思想。
二、实验目的1. 掌握Java的基本语法和面向对象的思想;2. 熟悉Java程序的编写和运行过程;3. 学会利用Java进行简单的程序设计。
三、实验内容3.1 实验环境为了进行本次实验,我们需要安装以下工具和环境:- JDK(Java Development Kit):Java开发工具包,包含了编译器和相关工具;- IDEA(Integrated Development Environment for Java):一种常用的Java集成开发环境。
3.2 实验步骤1. 安装JDK和IDEA,并完成相应的配置工作;2. 创建一个Java项目,并创建一个名为`HelloWorld`的Java类;3. 在`HelloWorld`类中编写代码,实现输出`Hello, World!`的功能;4. 编译和运行程序,观察结果。
四、实验过程和结果4.1 实验过程首先,我们需要安装JDK和IDEA,并完成相应的配置工作。
然后,我们打开IDEA,创建一个新的Java项目。
接着,在该项目中创建一个名为`HelloWorld`的Java类。
在`HelloWorld`类中,我们编写以下代码:javapublic class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}完成代码编写后,我们点击IDEA工具栏上的编译按钮,对代码进行编译。
编译成功后,我们点击运行按钮,运行程序。
4.2 实验结果在IDEA的控制台窗口上,我们可以看到以下输出:Hello, World!这就是我们期望的输出结果,说明我们成功地使用Java编写并运行了一个程序。
JAVA实验报告5异常处理实验
JAVA实验报告5异常处理实验一、实验目的1. 了解Java异常处理机制;2. 掌握Java中异常处理的方式;3.熟悉自定义异常的方法。
二、实验内容本实验通过编写代码来体验Java中的异常处理机制,主要包括以下几个方面:1.了解异常的基本知识;2. 学习try-catch语句的使用方法;3. 掌握throws关键字的用法;4.编写自定义异常类。
三、实验步骤1. 编写一个“除法计算器”类DivideCalculator,该类有一个名为divide的方法,用于计算两个整数的商,并返回结果。
如果除数为0,则会抛出一个自定义的异常类DivideByZeroException;2. 在DivideCalculator类中,先使用try-catch语句来捕获DivideByZeroException异常,如果除数为0,则在控制台上打印出“不能除以0”的错误信息;3. 在该方法中再使用throws关键字将异常抛出,以便调用方能捕获该异常;4. 编写一个测试类CalculatorTest来测试DivideCalculator类,将两个整数输入给divide方法,观察控制台输出的结果;5. 在CalculatorTest类中使用try-catch语句来捕获DivideByZeroException异常,并打印出错误信息;6. 在CalculatorTest的main方法中调用divide方法,传入5和0作为参数;7.运行程序,观察控制台输出的结果。
四、实验结果根据实验步骤中的代码编写,可得到以下实验结果:1.当传入的除数为非零整数时,程序正常执行并返回正确结果;2. 当传入的除数为0时,程序会抛出自定义的异常DivideByZeroException,并在控制台上打印出错误信息"不能除以0";3. 在CalculatorTest的try-catch语句中捕获到DivideByZeroException异常,并打印出错误信息"不能除以0"。
攀枝花学院Java实验五 常用类
实验报告附页String s7 = new String("123.678");int n1=Integer.parseInt(s6);//将s6转化成int型数据。
double n2=Double.parseDouble(s7); //将s7转化成double型数据。
double m=n1+n2;System.out.println(m);String s8=String.valueOf(m); //String调用valuOf(int n)方法将m转化为字符串对象position=s8.indexOf(".");String temp=s8.substring(position+1);System.out.println("数字"+m+"有"+temp.length()+"位小数") ;@SuppressWarnings("unused")String s9=new String("ABCDEF");char a[]=s8.toCharArray(); //将s8存放到数组a中。
for(int i=a.length-1;i>=0;i--){System.out.print(" "+a[i]);}}}运行结果:将上面程序按如下要求修改,并运行:(1)程序中的s6改写成String s6=new String(“1a12b”);运行时提示怎样的错误?Exception in thread "main" ng.NumberFormatException: For input string: "1a12b"at ng.NumberFormatException.forInputString(Unknown Source)at ng.Integer.parseInt(Unknown Source)at ng.Integer.parseInt(Unknown Source)at xiti2.xiugai.main(xiugai.java:39)(2)请用数组a的前3个单元创建一个字符串并输出该串。
java 实验报告
java 实验报告Java 实验报告引言:Java 是一种广泛应用于软件开发的计算机编程语言,具有跨平台、面向对象、简单易学等特点。
本实验报告将介绍我在学习 Java 过程中进行的一系列实验,包括实验目的、实验过程、实验结果和实验总结。
实验一:Hello World 程序实验目的:通过编写一个简单的 Hello World 程序,熟悉 Java 的开发环境和基本语法。
实验过程:1. 安装 Java Development Kit(JDK)并配置环境变量。
2. 使用文本编辑器编写以下代码:```javapublic class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}```3. 将代码保存为 HelloWorld.java。
4. 打开命令提示符,切换到代码所在目录,输入以下命令编译代码:```javac HelloWorld.java```5. 输入以下命令运行程序:```java HelloWorld```实验结果:命令提示符中输出 "Hello, World!"。
实验二:数据类型和运算符实验目的:了解 Java 的数据类型和运算符,并能够正确使用它们进行计算。
实验过程:1. 声明并初始化不同类型的变量,例如整数、浮点数和布尔类型。
2. 使用算术运算符进行基本的数值计算。
3. 使用逻辑运算符进行布尔类型的操作。
实验结果:根据实验过程中的代码和输入,得到相应的计算结果。
实验三:条件语句和循环结构实验目的:掌握 Java 中的条件语句和循环结构,能够根据不同的条件执行相应的代码块。
实验过程:1. 使用 if-else 语句实现条件判断。
2. 使用 switch-case 语句实现多分支选择。
3. 使用 for 循环、while 循环和 do-while 循环实现不同的循环结构。
《Java程序设计》上机实验报告 实验五 流、文件及基于文本的应用
信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)2.编写一个程序,能将一个源程序中的空行及注释去掉,并将处理后的内容写到目标文件中。
(源文件名称和目标文件名称均要求以命令行参数形式输入)import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class CopyFile {static String delComm(String s){if(s==null)return s;int pos=s.indexOf("//"); //去掉以//开始的注释if(pos<0)return s;return s.substring(0,pos);}public static void main(String args[]){String infname="CopyFile.java";String outfname="CopyFile.txt";if(args.length>=1)infname=args[0];if(args.length>=2)outfname=args[1];try{File fin=new File(infname);File fout=new File(outfname);BufferedReader in = new BufferedReader(new FileReader(fin));PrintWriter out = new PrintWriter(new FileWriter(fout));int cnt=0;String s = in.readLine(); //写字符串while(s != null){主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)cnt ++;s=delComm(s); //去掉以//开始的注释out.println(cnt+":\t"+s);//写出s=in.readLine(); //读入}in.close(); //关闭缓冲读入流及文件读入流的连接out.close();}catch (FileNotFoundException e1){System.out.println("File not found");}catch(IOException e2){e2.printStackTrace();}}}主要问题的出错现象:1)运行程序后,无对应的输出结果出现2)源程序编写过程中,出现方法和类的调用无法完成.出错原因:1)函数调用时候,相关函数输入变量错误2)方法名的书写不符合规范,使得方法变为变量.解决方法及效果:1) 编写和调用类的方法时,注意参数的类型和数量的对应.2)规范命名.常量用大写字母,变量用小写字母开始,类以大写字母开始.实验小结:1) 为每个类分配正确的职责.尽量保持类功能单一. 不要在一个类中做太多事.2) BufferedReader的方法:readLine():String ,当他的返回值是null时,就表示读取完毕了。
Java程序设计实验报告2010
public void setab(inti, int j)
{ a=i; b=j; }
public void printab()
{ int sum=a+b;
System.out.println(“a+b=”+sum);
}
}
//B.java
packagepkg1.pkg2;
public class B
{ Exam3_6 d1=new Exam3_6();
System.out.print(”The current date is(year/month/day):”);
d1.outDate();
System.out.println( );
System.out.print(”Its tomorrow date is(year/month/day):”);
{ A x=new A();
A y=new A();
x.setab(5);
y.setab(10);
System.out.println(“x.a=”+x.geta()+”,y.a=”+y.geta());
x.setb(-5);
y.setb(-10);
System.out.println(“x.b=”+x.getb()+”,y.b=”+y.getb());
Its tomorrow is (year/month/day):2000/1/2
The current date is (year/month/day):2004/1/8
Is tomorrow is (year/month/day):2004/1/9
JAVA语言程序设计实验报告
实验一、安装JDK并熟悉java的运行环境实验二、基本语法练习实验三、面向对象编程实验(4)实验四、异常处理实验实验五、小应用程序实验实验六、图形图像实验实验七、GUI(图形用户接口)实验(4)实验八、多线程实验实验九、输入输出流实验(4)实验十、数据库应用实验(4)实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。
二、预习内容安装工具软件的基本方法。
三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容安装Eclipse及JA V A的核心编译程序J2SDK。
1、打开Eclipse的安装盘安装Eclipse。
2、在相同目录下安装J2SDK。
3、打开Eclipse软件对J2SDK文件进行配置。
4、编写一应用程序,在屏幕上显示“HELLO WORLD”和爱心标志。
Pulic class Hello{public static void main(String args[]){//在屏幕上显示“HELLO WORLD”和爱心标志}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”和爱心标志。
实验结果五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、说明本次实验建议学时数2学时七、实验总结与体会实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。
应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。
(1)编辑A verage.java。
class A verage{public static void main(String args[ ]){double n,sun=0;for (int l=0;l<args.legth;l++){sum=sum+Double.valueOf(arg[l].doubleV alue();)}n=sum/args.length;System.out.println(“average=”+n);}}命令行参数:12.34 34.45 21212121注意:1)参数的个数可以利用args.length来取得。
东北石油大学Java程序设计学生实验报告.doc
东北石油大学学生实验报告实验课程名称_______________实验一 java 概述一、 实验目的1. 掌握如何下载Java 安装软件包并了解和使用JDK 环境;2. 熟悉JDK 集成环境的基本命令、功能和基本用法,并学会配置Java 环境变量;3. 简述JDK, JRE 的区别并简述path 和classpath 环境变量的作用;4. 学习并熟练掌握使用JDK 环境进行Java 程序开发的全过程(包括:源程序的编 辑、编译、调试、运行和结果查看);二、实验内容 1. JDK 开发包的下载与安装(JDK 版本可选); 2. 根据要求写出统环境变量的配置; 3. 编写一个JAVA 程序进行调试,掌握在JDK 开发包支持下编译和运行的过程; 三、 实验记录1. JDK 开发包的下载与安装(1)从Oracle 官网下载安装包安装,安装路径:C:\Program Files\Javagpa SE D<*volo|^m<*r>r Kit 8 LJpdRo* 131 (G-4QX 立0 M 丘人E H B I. WRn 皿"MIK ■内毛F. OVW1 您 心 9 MK Mteg *31变星值CV):2.配置系统环境变量path和classpath3. 编写java 程序,并编译、运行: 程序如下:public class Students{public static void main(String[] args){System, out. printin(,z 这是我编写的第一个Java 程序! “);}}运行结果:变里名(N):变重值(V):实验二运算符、流程控制语句}运行结果:2.课堂案例2:键盘录入x的值,计算出y的并输出x>=3, y二2*x +l;-l〈x〈3, y 二 2 *x; x<=-l , y 二 2 * x - 1程序如下:import java. util. Scanner; class ExamplelO{public static void main(String[] args){Scanner sc=ncw Scanner (Systom. in); System, out. print In (〃请输入x 的值:〃);int x二sc. nextlnt ();int y=0;if (x>3) {y二2*x+l;}else if (x>~l){y二2*x;}else {y二2*x-l;}System, out. printIn (〃y二〃+y);}}3.实验题1:编程实现1! +2! +3!+・・・..+10!的结果并输出结果。
Java程序设计实验报告
Java程序设计实验报告一.实验要求1.实验一:Java程序的编辑、编译和运行(1)了解java语言特点,掌握JDK环境中编译、运行程序的操作。
(2)熟悉EditPlus编辑器的使用。
(3)掌握Java Application的程序结构和开发过程。
(4)了解Java程序文件名和类名的说明方法。
2.实验二:Java程序设计基础(1)了解Java 的数据类型;(2)掌握各种变量的声明方式;(3)理解运算符的优先级;(4)掌握Java 基本数据类型、运算符与表达式、数组的使用方法;(5)理解Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法;(6)熟练掌握数组的使用(7)通过以上内容,掌握Java 语言的编程规则。
3.实验三:类的封装性设计(1)掌握从实体中抽象类与对象的方法(2)掌握定义类、创建对象、使用类与对象(3)掌握类及其成员的修饰符的使用(4)掌握构造函数的使用。
4.实验四:类的继承性与多态设计(1)掌握类的继承机制(2)熟悉类中成员的访问控制(3)掌握方法的多态性5.实验五:Applet小程序图形用户界面设计(1)掌握Java 的GUI 设计技术,(2)掌握AWT 和Swing 的应用技巧。
(3)掌握布局管理器(4)掌握事件处理的方法。
(5)掌握Java小程序的特点和编写方法。
二.实验内容1.实验一:java程序的编辑、编译和运行。
(1)使用EditPlus编写源程序(2)编写两个Java Application程序(A)输出一行文字“Hello,JAVA!”用消息对话框显示文本信息。
(B)找出教材复习题1.16中程序的错误,上机调试验证、修改得出正确输出结果。
A.错误程序public class Wlecome{public void Main(string[] args){System,out.println("Welcome to Java!);}}B.修改后程序public class Wlecome{public static void main(String[] args){System.out.println("Welcome to Java!");}}C.运行结果2实验二:分别使用while、do-while和for语句编程,找出所有的水仙花数并输出。
java 实验5 接口多态 实验报告
实验五接口、多态与内部类实验目标:1、理解接口、塑型、多态的概念并能熟练应用;2、熟练掌握接口的定义和使用;3、深刻理解构造方法的调用顺序,理解编写时需要注意的问题;4、了解并学会使用内部类实验任务:1、继承时的多态:目测给出下面代码的执行输出结果,并简单解释每一行输出的原因。
答:首先,该程序的主函数是Vehicle v=new Vehicle();即先声明并实例化一个汽车对象,而v.test();则是调用汽车的测试方法;而test方法里,Vehicle vc=new Car();是将上面的汽车指向了一个具体的小汽车对象;Bus vb=new Bus();将公共汽车指向了一个具体的公共汽车对象;drive();调用汽车的驾驶方法;vc.drive();调用小汽车的驾驶方法;vb.drive();调用公共汽车的驾驶方法;而vc.brake();vb.brake();则是直接调用汽车的刹车方法。
因而运行结果如下:A new bus.Vehicle is drivenCar is drivenBus is drivenVehicle is brakedVehicle is braked2.针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。
编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性测试。
(参考例子5-9;实验4该题是要求用抽象类来实现,在此要求用接口实现,还要进行多态性测试)说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。
要求:(1)Instrument为接口,Wind为抽象类,其他为普通类。
这里测试的目的是:我们知道当一个普通类实现一个接口时,必须实现该接口的全部方法,但当这个类是抽象类时,我们还需要实现该接口全部方法吗?如果不需要实现?那么是否直接不理这个方法就一,还是要将这个方法在自己类内部再标记一次为抽象方法。
Java实验报告5-AWT和swing组件的功能
实验报告课程名称: Java语言程序设计院(系):管理学院专业班级:姓名:学号:指导教师:2013年6月9日《Java语言程序设计》上机实验报告序号实验五组号 1 成绩名称图形用户界面AWT/Swing组件学时 2评阅教师签名: 2013年月日一、实验目的1.熟悉Java AWT、swing组件的功能;2.掌握常用组件的事件接口;3.会应用AWT、swing组件进行应用程序设计。
二、实验内容AWT、swing组件应用程序设计设计(完成windows计算器两种以上的运算功能)。
三、实验硬件、软件环境1.PC计算机一台,配置为CPU为P42.8G,内存为512M,硬盘为80G;2.WindowsXP + JSDK1.6 + JCreatorV4。
四、实验算法设计在设计计算其界面的基础上,添加事件监视,对按钮进行各种操作。
五、程序设计/*** @(#)Calculator.java*** @author* @version 1.00 2013/6/9*/import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame{private final JTextField textField;private String num="0";private String operator="+";private String result="0";public static void main(String agrs[]){Calculator frame=new Calculator();frame.setVisible(true);}public Calculator(){super();setTitle("计算器");setResizable(false);setBounds(100,100,208,242);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);final JPanel viewPanel=new JPanel();add(viewPanel,BorderLayout.NORTH);textField=new JTextField();textField.setText(num);textField.setColumns(18);textField.setEditable(false);textField.setHorizontalAlignment(SwingConstants.RIGHT);viewPanel.add(textField);add(viewPanel,BorderLayout.NORTH);final JPanel clearButtonPanel=new JPanel();clearButtonPanel.setLayout(new GridLayout(1,3,5,5));add(clearButtonPanel,BorderLayout.CENTER);String[] clearButtonNames={"<-","CE","C"};for(int i=0;i<3;i++){final JButton button=new JButton(clearButtonNames[i]);button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {JButton button=(JButton)e.getSource();String text=button.getText().trim();if(text.equals("<-")){int length=num.length();if(length==1)num="0";else num=num.substring(0,length-1);}else if(text.equals("CE")){num="0";}else{num="0";operator="+";result="0";}textField.setText(num);}});clearButtonPanel.add(button);};final JPanel inputButtonPanel=new JPanel();final GridLayout gridLayout=new GridLayout(4,0,10,10);inputButtonPanel.setLayout(gridLayout);add(inputButtonPanel,BorderLayout.SOUTH);String[][]inputButtonNames={{"1","2","3","+"},{"4","5","6","-"},{"7","8","9","*"},{".","0","=","/"} };for(int row=0;row<4;row++){for(int col=0;col<4;col++){final JButton button=new JButton(inputButtonNames[row][col]);button.setName(row+""+col);button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JButton button=(JButton)e.getSource();String name=button.getName();int row=Integer.valueOf(name.substring(0,1));int col=Integer.valueOf(name.substring(1,2));100if(col==3){count();textField.setText(result);operator=button.getText();}else if(row==3){if(col==0){if(num.indexOf(".")<0){num=num+button.getText();textField.setText(num);}}else if(col==1){if(num.indexOf(".")>0){num=num+button.getText();textField.setText(num);}else{if(!num.substring(0,1).equals("0")){num=num+button.getText();textField.setText(num);}}}else{count();textField.setText(result);operator="+";}}else{if(num.equals("0"))num=button.getText();else num=num+button.getText();textField.setText(num);}}void count(){float n=Float.valueOf(num);float r=Float.valueOf(result);if(r==0){result=num;num="0";}else{if(operator.equals("+")){r=r+n;}else if(operator.equals("-")){r=r-n;}else if(operator.equals("*")){r=r*n;}else {r=r/n;}num="0";result=r+"";}}});inputButtonPanel.add(button);}}}}六、程序测试记录及结果、运行说明七、实验总结系统的设计程序,完成程序前后关照,解决每个问题关键要求。
Java实验五
Java实验五组件与事件处理【目的】①学习处理ActionEvent事件;②学习处理ItemEvent事件和paint方法;③学习使用布局类。
【内容】1.算术测试。
✧实验要求:编写一个算书测试小软件,用来训练小学生的算术能力。
程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。
✧程序:Teacher.javapublic class Teacher{int numberOne, numberTwo;String operator = "";boolean right;public int giveNumberOne(int n){numberOne = (int)(Math.random() * n) + 1;return numberOne;}public int giveNumberTwo(int n){numberTwo = (int)(Math.random() * n) + 1;return numberTwo;}public String giveOperator(){double d = Math.random();if (d >= 0.5)operator = "+";elseoperator = "-";return operator;}public boolean getRight(int answer){if (operator.equals("+")){if (answer == numberOne + numberTwo)right = true;elseright = false;}else if (operator.equals("-")){if (answer == numberOne - numberTwo)right = true;elseright = false;}return right;}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener {TextField textOne, textTwo, textResult;Button getProblem, giveAnwser;Label operatorLabel, message;Teacher teacher;ComputerFrame(String s){super(s);teacher = new Teacher();setLayout(new FlowLayout());textOne = new TextField(10); //创建textOne,其可见字符长是textTwo = new TextField(10); //创建textTwo,其可见字符长是textResult = new TextField(10); //创建textResult,其可见字符长是operatorLabel = new Label("+");message = new Label("你还没有回答呢");getProblem = new Button("获取题目");giveAnwser = new Button("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器setBounds(100, 100, 450, 100);setVisible(true);validate();addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){if (e.getSource() == getProblem) //判断事件源是否是getProblem{int number1 = teacher.giveNumberOne(100);int number2 = teacher.giveNumberTwo(100);String operator = teacher.giveOperator();textOne.setText("" + number1);textTwo.setText("" + number2);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}if (e.getSource() == giveAnwser) //判断事件源是否是giveAnwser{String answer = textResult.getText();try{int result = Integer.parseInt(answer);if (teacher.getRight(result) == true){message.setText("你回答正确");}else{message.setText("你回答错误");}}catch (NumberFormatException ex){message.setText("请输入数字字符");}}textResult.requestFocus();validate();}}MainClass.javapublic class MainClass{public static void main(String args[]){ComputerFrame frame;frame = new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试}}✧实验后的练习:1. 给上述程序增加测试乘、除的功能。
(完整版)Java程序设计实验报告
Java 程序设计实验报告实验一实验题目:从键盘上读入10 个字符串存入数组 a 中,而后输出这10个字符串中最大字符串和最小字符串。
实验代码:public class StrPro {public static void main(String[] args) {String str[] =new String[5];System. out .println("Please input 10 strings :" );int i;String max,min;for (i=0;i<5;i++){System. out .print( "Please input the " +(i+1)+ " string:" );Scanner sc = new Scanner(System. in );str[i] = sc.nextLine();}max = str[0];min = str[0];for (i=0;i<str.length ;i++){if (pareTo(str[i])<0){max = str[i];}if (pareTo(str[i])>0){min = str[i];}}System. out .println( System. out .println( " 最大的字符串为: " +max); " 最小的字符串为: " +min);}}实验结果:实验心得领会:掌握了 java 的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。
实验二实验题目:自定义一个矩形类( Rectangle ),包括的属性有:长( length ),宽(width ),包括的方法有:对于属性的 setter 和 getter 方法,即 setLength ,getLength ,setWidth ,getWidth ,计算矩形面积的方法(g etArea )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C H ANG Z H OU U N I V E RSITY实验报告课程名称:JAVA程序设计学生姓名:孙文浩班级计算机141 学号14416122 学院(系):信息数理学院指导教师:吕猛实验时间:2016 年12 月 6 日实验名称:实验五基于Swing的图形用户界面开发实验实验五基于Swing的图形用户界面开发实验一实验内容(1)完成开发界面如图所示,实现如下功能①选中“查看已有名片”按钮,程序处于查看状态,可以在“名片列表”中选择要查看的名片,程序在“名片详实信息”栏显示该名片的详实信息,此状态中名片信息处于不可编辑状态②选中“添加新名片”按钮,程序处于添加状态,所有关于明天信息的项目都处于可编辑状态,设置完成相关信息后,单击“添加”按钮,在“名片列表”中出现新添加名片的名称。
单击“清空”按钮可以清空还没提交的内容③在查看状态和添加状态下,都可以通过点击“爱好”、“学历”单选按钮以显示名片的不同附加信息(备注:名片附加信息部分,当点击“爱好”按钮时显示的如图1所示,当点击“学历”按钮时显示如图2所示。
)图1图2(2)记事本设计与实现如图所示(1)编程实现如图所示的界面(2)实现文件、编辑、格式、查看,帮助菜单(3)实现记事本的基本功能二实验目的(1)理解组件的分类(2)掌握容器、布局管理器、普通组件的使用(3)理解事件处理机制的工作原理(4)掌握事件的添加和功能代码的编写方法三实验过程(1)问题分析答:名片的设计除了使用最基本的组件,如JButton,Jlist,JCheckBox,JTextField, JRadioButton, CardLayout以外,最主要的是逻辑事件的编写,在成功布局完见面后,就需要编写事件处理。
首先,由于是名片信息,保存着一个人的基本信息,所以可以用一个类来表示,如PersonInf类,其次,由于是多个人的信息,可以通过ArrayList 来存放类;其次就是当点击按钮的时候,正确添加和显示信息,此处用到cardLayout 布局,可以减少界面的复杂度,在使用JList的时候,除了加滚动条意外,还需要listModel 获取数据等。
(2)代码编写答:(1)public class PersonInf {public String yourname;public String address1;public String address2;public String email;public String sing = null;public String dance = null;public String web = null;public String football = null;public String basketball = null;public String volleyball = null;public String xueshi = null;public String shuoshi = null;public String boshi = null;public String qita = null;public PersonInf(String yourname, String address1, String address2, String email, String sing, String dance,String web, String football, String basketball, String volleyball,String xueshi,String shuoshi,String boshi, String qita) {super();this.yourname = yourname;this.address1 = address1;this.address2 = address2;this.email = email;this.sing = sing;this.dance = dance;this.web = web;this.football = football;this.basketball = basketball;this.volleyball = volleyball;this.xueshi = xueshi;this.shuoshi = shuoshi;this.boshi = boshi;this.qita = qita;}}import java.awt.BorderLayout;import javax.swing.*;import java.awt.*;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JInternalFrame;import javax.swing.JRadioButton;import javax.swing.JLayeredPane;import javax.swing.JSplitPane;import javax.swing.BorderFactory;import javax.swing.Box;import javax.swing.DefaultListModel;import ponent;import javax.swing.border.SoftBevelBorder;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener; import javax.swing.border.BevelBorder;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.border.EtchedBorder;import javax.swing.JFormattedTextField;import javax.swing.JSpinner;import javax.swing.JTable;import javax.swing.JList;import javax.swing.JScrollPane;import java.awt.Color;import javax.swing.JTextArea;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.util.ArrayList;import java.awt.event.ActionEvent;import java.awt.CardLayout;public class card extends JFrame {private JPanel contentPane;public JTextField nametext;public JTextField address1test;public JTextField address2test;public JTextField emailtest;public JButton addmessagebutton;public JButton clearbutton;private JList list;//学历,爱好,添加新名片,查看名片的按钮private JRadioButton rdbtnNewRadioButton_2;private JRadioButton rdbtnNewRadioButton_3;public JRadioButton rdbtnNewRadioButton_1;public JRadioButton rdbtnNewRadioButton;private JPanel panel_4;//学历和爱好内的多选项public JCheckBox singbox;public JCheckBox dancebox;public JCheckBox webbox;public JCheckBox footballbox;public JCheckBox basketballbox;public JCheckBox volleyballbox;public JCheckBox xueshibox;public JCheckBox boshibox;public JCheckBox shuoshibox;public JCheckBox qitabox;ListSelectionModel listSelectionModel;CardLayout mycard; //用于切换爱好和学历卡片//定义默认的list模型DefaultListModel defaultListModel = new DefaultListModel();/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {card frame = new card();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*///窗体的构造函数,用于设定相关组件并且添加事件,合理安排组建的位置public card() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 464, 338);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);JPanel panel = new JPanel();panel.setBounds(0, 0, 459, 316);contentPane.add(panel);panel.setLayout(null);Box horizontalBox = Box.createHorizontalBox();horizontalBox.setBounds(131, 203, 121, -41);panel.add(horizontalBox);Box horizontalBox_1 = Box.createHorizontalBox();horizontalBox_1.setBounds(0, 0, 1, 1);panel.add(horizontalBox_1);JPanel panel_1 = new JPanel();panel_1.setBounds(16, 27, 166, 66);panel_1.setBorder(BorderFactory.createLoweredSoftBevelBorder());panel.add(panel_1);rdbtnNewRadioButton_1 = new JRadioButton("查看已有名片");rdbtnNewRadioButton_1.setSelected(true);panel_1.add(rdbtnNewRadioButton_1);rdbtnNewRadioButton_1.addActionListener(new cardseechangelistener());rdbtnNewRadioButton = new JRadioButton("添加新名片");panel_1.add(rdbtnNewRadioButton);rdbtnNewRadioButton.addActionListener(new cardseechangelistener());ButtonGroup group2 = new ButtonGroup();group2.add(rdbtnNewRadioButton_1);group2.add(rdbtnNewRadioButton);JPanel panel_2 = new JPanel();panel_2.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panel_2.setBounds(194, 27, 248, 182);panel.add(panel_2);panel_2.setLayout(null);JLabel lblNewLabel = new JLabel("");lblNewLabel.setBounds(34, 13, 61, 16);panel_2.add(lblNewLabel);nametext = new JTextField();nametext.setBounds(100, 8, 130, 26);panel_2.add(nametext);nametext.setColumns(10);address1test = new JTextField();address1test.setColumns(10);address1test.setBounds(100, 36, 130, 26);panel_2.add(address1test);JLabel label = new JLabel("地址");label.setBounds(34, 41, 61, 16);panel_2.add(label);address2test = new JTextField();address2test.setColumns(10);address2test.setBounds(100, 64, 130, 26);panel_2.add(address2test);JLabel label_1 = new JLabel("联系地址");label_1.setBounds(28, 69, 61, 16);panel_2.add(label_1);JLabel label_2 = new JLabel("电子邮件");label_2.setBounds(28, 97, 61, 16);panel_2.add(label_2);emailtest = new JTextField();emailtest.setColumns(10);emailtest.setBounds(100, 92, 130, 26);panel_2.add(emailtest);rdbtnNewRadioButton_2 = new JRadioButton("爱好");rdbtnNewRadioButton_2.setBounds(18, 125, 61, 16);panel_2.add(rdbtnNewRadioButton_2);rdbtnNewRadioButton_2.addActionListener(new cardchangelistener());rdbtnNewRadioButton_3 = new JRadioButton("学历"); rdbtnNewRadioButton_3.setBounds(18, 153, 61, 16);panel_2.add(rdbtnNewRadioButton_3);rdbtnNewRadioButton_3.addActionListener(new cardchangelistener());ButtonGroup group1 = new ButtonGroup();group1.add(rdbtnNewRadioButton_2);group1.add(rdbtnNewRadioButton_3);addmessagebutton = new JButton("添加");addmessagebutton.addActionListener(new addmessagebuttonlistener());addmessagebutton.setBounds(123, 121, 85, 27);panel_2.add(addmessagebutton);//清空按钮,点击时触发清空的事件clearbutton = new JButton("清空");clearbutton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(e.getSource() == clearbutton){singbox.setSelected(false);dancebox.setSelected(false);webbox.setSelected(false);footballbox.setSelected(false);basketballbox.setSelected(false);volleyballbox.setSelected(false);xueshibox.setSelected(false);shuoshibox.setSelected(false);boshibox.setSelected(false);qitabox.setSelected(false);nametext.setText("");address1test.setText("");address2test.setText("");emailtest.setText("");}}});clearbutton.setBounds(123, 149, 85, 27);panel_2.add(clearbutton);clearbutton.setEnabled(false);addmessagebutton.setEnabled(false);JPanel panel_3 = new JPanel();panel_3.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panel_3.setBounds(16, 123, 166, 187);panel.add(panel_3);panel_3.setLayout(null);list = new JList();list.setModel(defaultListModel);list.setBounds(19, 82, 85, 87);listSelectionModel = list.getSelectionModel();listSelectionModel.addListSelectionListener(new SharedListSelectionHandler());JScrollPane scrollPane = new JScrollPane(list);scrollPane.setBounds(6, 6, 154, 175);panel_3.add(scrollPane);panel_4 = new JPanel();panel_4.setBounds(194, 232, 248, 78);panel.add(panel_4);mycard = new CardLayout();panel_4.setLayout(mycard);JPanel panel_5 = new JPanel();panel_5.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panel_4.add(panel_5);panel_5.setLayout(null);singbox = new JCheckBox("唱歌");singbox.setBounds(6, 16, 66, 23);panel_5.add(singbox);dancebox = new JCheckBox("跳舞");dancebox.setBounds(82, 16, 66, 23);panel_5.add(dancebox);webbox = new JCheckBox("上网");webbox.setBounds(160, 16, 66, 23);panel_5.add(webbox);footballbox = new JCheckBox("足球");footballbox.setBounds(6, 41, 66, 23);panel_5.add(footballbox);basketballbox = new JCheckBox("篮球");basketballbox.setBounds(82, 41, 66, 23);panel_5.add(basketballbox);volleyballbox = new JCheckBox("排球");volleyballbox.setBounds(160, 41, 66, 23);panel_5.add(volleyballbox);JPanel panel_6 = new JPanel();panel_6.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null)); panel_4.add(panel_6);panel_6.setLayout(null);xueshibox = new JCheckBox("学士");xueshibox.setBounds(16, 16, 75, 23);panel_6.add(xueshibox);boshibox = new JCheckBox("博士");boshibox.setBounds(16, 49, 83, 23);panel_6.add(boshibox);shuoshibox = new JCheckBox("硕士");shuoshibox.setBounds(111, 16, 75, 23);panel_6.add(shuoshibox);qitabox = new JCheckBox("其他");qitabox.setBounds(111, 49, 111, 23);panel_6.add(qitabox);nametext.setEnabled(false);address1test.setEnabled(false);address2test.setEnabled(false);emailtest.setEnabled(false);JLabel lblNewLabel_1 = new JLabel("选择动作");lblNewLabel_1.setBounds(16, 6, 61, 16);panel.add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("名片详细信息");lblNewLabel_2.setBounds(194, 6, 84, 16);panel.add(lblNewLabel_2);JLabel lblNewLabel_3 = new JLabel("名片附加信息");lblNewLabel_3.setBounds(191, 214, 87, 16);panel.add(lblNewLabel_3);JLabel lblNewLabel_4 = new JLabel("名片列表");lblNewLabel_4.setBounds(16, 105, 61, 16);panel.add(lblNewLabel_4);}public ArrayList <PersonInf> items = new ArrayList<>();//当点击添加按钮时,将文本编辑框及多选框中的信息保存到新建的personinf类中//并且将每个新建的personinf放到Arraylist中,只将名字显示到list中class addmessagebuttonlistener implements ActionListener{Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource() == addmessagebutton){System.out.println("you add addmessagebutton");String dance = null;String sing = null;String web = null;String football = null;String basketball = null;String volleyball = null;String xueshi = null;String shuoshi = null;String boshi = null;String qita = null;if(singbox.isSelected()){sing = singbox.getText();}if(dancebox.isSelected()){dance = dancebox.getText();}if(webbox.isSelected()){web = webbox.getText();}if(footballbox.isSelected()){football = footballbox.getText();}if(basketballbox.isSelected()){basketball = basketballbox.getText();}if(volleyballbox.isSelected()){volleyball = volleyballbox.getText();}if(xueshibox.isSelected()){xueshi = xueshibox.getText();}if(shuoshibox.isSelected()){shuoshi = shuoshibox.getText();}if(boshibox.isSelected()){boshi = boshibox.getText();}if(qitabox.isSelected()){qita = qitabox.getText();}PersonInf p1 = new PersonInf(nametext.getText(),address1test.getText(), address2test.getText(),emailtest.getText(),sing,dance,web,football,basketball,volleyball,xueshi,shuoshi,boshi,qita);items.add(p1);defaultListModel.addElement("名字为:"+p1.yourname);}}}//此处用于判断是选择爱好卡片还是学历卡片class cardchangelistener implements ActionListener{Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//如果选择的是爱好,则显示爱好的界面if(rdbtnNewRadioButton_2.isSelected()){mycard.next(panel_4);}//如果是选择学历,则显示学历的界面if(rdbtnNewRadioButton_3.isSelected()){mycard.previous(panel_4);}}}//此处是用与判断名片的两种状态,如果是查看已有名片,则将可编辑区的属性设置为不可编辑//如果是添加现有名片,则可以编辑class cardseechangelistener implements ActionListener{Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource() == rdbtnNewRadioButton){nametext.setEnabled(true);address1test.setEnabled(true);address2test.setEnabled(true);emailtest.setEnabled(true);addmessagebutton.setEnabled(true);clearbutton.setEnabled(true);rdbtnNewRadioButton_2.setSelected(true);singbox.setEnabled(true);dancebox.setEnabled(true);webbox.setEnabled(true);footballbox.setEnabled(true);basketballbox.setEnabled(true);volleyballbox.setEnabled(true);xueshibox.setEnabled(true);boshibox.setEnabled(true);shuoshibox.setEnabled(true);qitabox.setEnabled(true);}if(e.getSource() == rdbtnNewRadioButton_1) {nametext.setEnabled(false);address1test.setEnabled(false);address2test.setEnabled(false);emailtest.setEnabled(false);addmessagebutton.setEnabled(false);clearbutton.setEnabled(false);singbox.setSelected(false);dancebox.setSelected(false);webbox.setSelected(false);footballbox.setSelected(false);basketballbox.setSelected(false);volleyballbox.setSelected(false);xueshibox.setSelected(false);shuoshibox.setSelected(false);boshibox.setSelected(false);qitabox.setSelected(false);singbox.setEnabled(false);dancebox.setEnabled(false);webbox.setEnabled(false);footballbox.setEnabled(false);basketballbox.setEnabled(false);volleyballbox.setEnabled(false);xueshibox.setEnabled(false);boshibox.setEnabled(false);shuoshibox.setEnabled(false);qitabox.setEnabled(false);}}}//list中的事件处理器,当点击list中的选项时,将类信息显示到文本框中//与radiobutton上,此时处理不可编辑状态class SharedListSelectionHandler implements ListSelectionListener{Overridepublic void valueChanged(ListSelectionEvent e) {// TODO Auto-generated method stub//将学历及爱好的编辑状态设为不可编辑singbox.setSelected(false);dancebox.setSelected(false);webbox.setSelected(false);footballbox.setSelected(false);basketballbox.setSelected(false);volleyballbox.setSelected(false);xueshibox.setSelected(false);shuoshibox.setSelected(false);boshibox.setSelected(false);qitabox.setSelected(false);//获取list的index值int k = 0;k = list.getSelectedIndex();//创建PersonInf空类,用于存储从arraylist中获取的类对象PersonInf px = null;px = items.get(k);//将此类的信息显示到相应的组件上nametext.setText(px.yourname);address1test.setText(px.address1);address2test.setText(px.address2); emailtest.setText(px.email);if(px.sing != null){singbox.setSelected(true);}if(px.dance != null){dancebox.setSelected(true);}if(px.web != null){webbox.setSelected(true);}if(px.football != null){footballbox.setSelected(true);}if(px.basketball != null){basketballbox.setSelected(true);}if(px.volleyball != null){volleyballbox.setSelected(true);}if(px.xueshi != null){xueshibox.setSelected(true);}if(px.shuoshi != null){shuoshibox.setSelected(true);}if(px.boshi != null){boshibox.setSelected(true);}if(px.qita != null){qitabox.setSelected(true);}}}}(2)import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Date;import java.text.SimpleDateFormat;public class Notepad extends JFrame{JMenuBar menub=new JMenuBar();JTextArea text=new JTextArea();JMenu files=new JMenu("文件(F)");JMenu edit=new JMenu("编辑(E)");JMenu formats=new JMenu("格式(O)");JMenu look=new JMenu("查看(V)");JMenu help=new JMenu("帮助(H)");JMenuItem newFile=new JMenuItem("新建(N)");JMenuItem open=new JMenuItem("打开(O)...");JMenuItem save=new JMenuItem("保存(S)");JMenuItem saveAs=new JMenuItem("另存为(A)...");JMenuItem page=new JMenuItem("页面设置(U)...");JMenuItem print=new JMenuItem("打印(P)...");JMenuItem exit=new JMenuItem("退出(X)");JMenuItem undo=new JMenuItem("撤销(U)");JMenuItem cut=new JMenuItem("剪切(T)");JMenuItem copy=new JMenuItem("复制(C)");JMenuItem paste=new JMenuItem("粘贴(P)");JMenuItem selectAll=new JMenuItem("全选(A)");JMenuItem timeDate=new JMenuItem("时间/日期(D)"); JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");JMenuItem fonts=new JMenuItem("字体...");JMenuItem state=new JMenuItem("状态栏(S)..."); JMenuItem lookhelp=new JMenuItem("查看帮助(H)"); JMenuItem about=new JMenuItem("关于记事本(A)"); JFrame th=this;String name;String openedPath=null;boolean opened=false;boolean reworked=false;//初始化窗体Notepad(String name){super(name);=name;int x,y;Dimension size=Toolkit.getDefaultToolkit().getScreenSize(); x=(size.width-600)/2;y=(size.height-400)/2;setSize(600,400);setLocation(x,y); //让程序界面显示在屏幕中央setMinimumSize(new Dimension(250,150)); setDefaultCloseOperation(EXIT_ON_CLOSE);}//初始化布局void init(){//为控件添加助记符files.setMnemonic('F');edit.setMnemonic('E');formats.setMnemonic('O');help.setMnemonic('H');newFile.setMnemonic('N');open.setMnemonic('O');save.setMnemonic('S');saveAs.setMnemonic('A');page.setMnemonic('U');exit.setMnemonic('X');undo.setMnemonic('U');cut.setMnemonic('T');copy.setMnemonic('C');paste.setMnemonic('P');selectAll.setMnemonic('A');timeDate.setMnemonic('D');lineWrap.setMnemonic('M');lookhelp.setMnemonic('H');about.setMnemonic('A');//为控件添加快捷键newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK)); exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK)); cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK)); copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK)); selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK)); timeDate.setAccelerator(KeyStroke.getKeyStroke("F5"));//将菜单项添加到菜单中files.add(newFile);files.add(open);files.add(save);files.add(saveAs);files.add(page);files.add(print);files.addSeparator();files.add(exit);edit.add(undo);edit.addSeparator();edit.add(cut);edit.add(copy);edit.add(paste);edit.addSeparator();edit.add(selectAll);edit.add(timeDate);formats.add(lineWrap);formats.add(fonts);look.add(state);help.add(lookhelp);help.add(about);menub.add(files);menub.add(edit);menub.add(formats);menub.add(look);menub.add(help);setJMenuBar(menub);getContentPane().add(new JScrollPane(text));//为控件添加事件侦听器Listen listen=new Listen();Listen1 listen1=new Listen1();newFile.addActionListener(listen);open.addActionListener(listen);save.addActionListener(listen);saveAs.addActionListener(listen);exit.addActionListener(listen);cut.addActionListener(listen);copy.addActionListener(listen);paste.addActionListener(listen);selectAll.addActionListener(listen); timeDate.addActionListener(listen); lineWrap.addActionListener(listen); lookhelp.addActionListener(listen);about.addActionListener(listen);open.addActionListener(listen1);save.addActionListener(listen1);saveAs.addActionListener(listen1);//暂时没有实现的功能undo.setEnabled(false);fonts.setEnabled(false);state.setEnabled(false);}class Listen implements ActionListener {//实现用于一般操作的事件侦听器public void actionPerformed(ActionEvent e) {Object source=e.getSource();if(source==newFile){text.setText("");th.setTitle(name);openedPath=null;opened=false;}else if(source==exit)System.exit(0);else if(source==selectAll)text.selectAll();else if(source==cut)text.cut();else if(source==copy)text.copy();else if(source==paste)text.paste();else if(source==lineWrap)text.setLineWrap(!text.getLineWrap());else if(source==lookhelp){String message=" ----这是一个帮助---";JOptionPane.showMessageDialog(th,message,"帮助",JOptionPane.PLAIN_MESSAGE); }else if(source==about){String message=" ----这是一个记事本----";JOptionPane.showMessageDialog(th,message,"关于",JOptionPane.PLAIN_MESSAGE); }else if(source==timeDate){Date nowTime=new Date();SimpleDateFormat times=new SimpleDateFormat("HH:mm yyyy-MM-dd");text.insert(times.format(nowTime),text.getCaretPosition());}}}class Listen1 implements ActionListener{//实现用于对文件进行操作的事件侦听器public void actionPerformed(ActionEvent e){Object source=e.getSource();//打开文件事件if(source==open){FileDialog openFile=new FileDialog(th,"打开文件...",FileDialog.LOAD);openFile.setVisible(true);String filePath=openFile.getDirectory()+openFile.getFile();try{FileInputStream fis=new FileInputStream(filePath);byte [] content=new byte[fis.available()];fis.read(content);text.setText(new String(content));text.setCaretPosition(0);if(openFile.getFile()!=null){th.setTitle(openFile.getFile()+name);openedPath=filePath;opened=true;}fis.close();catch(Exception ex){ex.printStackTrace();}opened=true;}//保存及另存为事件else if(source==save||source==saveAs){String savePath=openedPath;if(savePath==null||source==saveAs){FileDialog saveFile=new FileDialog(th,"保存文件...",FileDialog.SAVE);saveFile.setVisible(true);savePath=saveFile.getDirectory()+saveFile.getFile();}try{FileOutputStream fos=new FileOutputStream(savePath);fos.write(text.getText().getBytes());fos.close();}catch(Exception ex){ex.printStackTrace();}if(source==save)openedPath=savePath;}}}public static void main(String[] args){try {UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());}catch (Exception e) {System.err.println("Couldn't use the system look and feel:"+e);}String name=("sun- 记事本");Notepad note=new Notepad(name);note.init();note.setVisible(true);}(3)程序运行和结果分析答:(1)(2)四实验小结经过本次实验,我理解组件的分类,掌握容器、布局管理器、普通组件的使用,理解事件处理机制的工作原理,掌握事件的添加和功能代码的编写方法。