实验5 子类与继承
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();}}六、实验小结。
实验报告_实验5 类与类关系与抽象类(学生学号_姓名)

实验报告_实验5类与类关系与抽象类(学生学号_姓名)一、实验目的1.理解继承的概念,掌握子类的创建方法;2.熟悉成员变量的隐藏和方法覆盖;3.掌握使用super访问被隐藏、覆盖的基类变量与方法;4.理解继承的层次结构,熟悉构造方法的执行顺序;5.理解访问修饰符的作用,熟悉访问修饰符对子类继承性的影响;6.熟悉子类对象向上转型的实现方法和Object类的基本用法;7.理解多态种类、意义、实现条件及基本应用;8.理解内部类的作用、种类、实现方法及注意事项;9.理解类与类之间的关系,了解单例模式的实现机理;10.理解抽象类、抽象方法概念,熟悉它们的声明、使用。
二、实验内容与步骤1.(基础题)根据题意及注释补充所缺少代码,然后运行程序public Student(){}public Student(String sno, String sname, int age) {this.sname=sname;this.sno=sno;this.age=age;} public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname= sname;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}(1): class CollegeStudent extends Student(2): getSno()(3): getSname()(4): getAge()(5): major(6): student.setAge(26)(7): student.setSname("Jack")(8): cstudent.setSname("Jerry")(9): cstudent.setSno("1840700101")(10): cstudent.setAge(23)(11): cstudent.setMajor("物联网工程")回答相关问题:(1)程序中有多少个类,哪个是主类?哪个是基类?哪个是子类?(2)程序中子类继承了基类哪些成员?基类对象如何给成员赋初值?子类对象又是如何给成员赋值?(3)是否可以不定义Student类的无参构造器?2.(基础题)分析、运行以下程序,并回答相关问题:(1)分析程序,找出有问题的代码,请问出错原因是什么?(2)修改程序中的错误。
Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}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) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint 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 if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public 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 += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;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.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
继承的含义实验报告

一、实验目的1. 理解继承的概念及其在面向对象编程中的重要性;2. 掌握Java中继承的实现方式;3. 熟悉继承中成员的访问权限;4. 掌握子类与父类之间的关系。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 定义一个父类Person,包含以下属性和方法:- 属性:name(姓名)、age(年龄)- 方法:setName(String name)、getName(String name)、setAge(int age)、getAge(int age)、toString()2. 定义一个子类Student,继承自Person类,包含以下属性和方法:- 属性:id(学号)- 方法:setId(int id)、getId(int id)3. 编写main方法,创建Person和Student对象,并输出对象信息。
4. 定义一个父类Animal,包含以下属性和方法:- 属性:name(名字)、age(年龄)- 方法:setName(String name)、getName(String name)、setAge(int age)、getAge(int age)、toString()5. 定义一个子类Dog,继承自Animal类,包含以下属性和方法:- 属性:breed(品种)- 方法:setBreed(String breed)、getBreed(String breed)6. 编写main方法,创建Animal和Dog对象,并输出对象信息。
7. 定义一个父类Vehicle,包含以下属性和方法:- 属性:brand(品牌)、model(型号)- 方法:setBrand(String brand)、getBrand(String brand)、setModel(String model)、getModel(String model)、toString()8. 定义一个子类Car,继承自Vehicle类,包含以下属性和方法:- 属性:color(颜色)- 方法:setColor(String color)、getColor(String color)9. 编写main方法,创建Vehicle和Car对象,并输出对象信息。
java类的继承实验报告

java类的继承实验报告Java类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。
Java作为一种面向对象的编程语言,也提供了类的继承机制。
本实验旨在通过编写Java程序,深入理解和掌握Java类的继承。
实验目的:1. 理解继承的概念和原理;2. 掌握Java中类的继承的语法和用法;3. 实践继承的实际应用。
实验过程:1. 创建父类和子类在实验中,我们首先创建一个父类和一个子类。
父类可以是一个基本的类,子类则继承了父类的属性和方法。
这样,子类就可以在不改变父类的基础上,扩展自己的功能。
2. 继承的语法和用法Java中,使用关键字"extends"来实现类的继承。
子类通过继承父类,可以获得父类的属性和方法,并且可以在子类中添加新的属性和方法。
在实验中,我们可以通过创建子类对象,并调用继承自父类的方法来验证继承的正确性。
3. 方法的重写在继承中,子类可以重写父类的方法。
这样,当子类调用该方法时,实际上执行的是子类重写后的方法。
通过方法的重写,我们可以实现多态性的效果。
4. 实际应用在实验中,我们可以选择一个具体的应用场景,例如动物类的继承。
我们可以创建一个父类Animal,包含基本的属性和方法,然后创建子类Dog和Cat,分别继承Animal类,并添加自己的特有属性和方法。
通过这个实例,我们可以更好地理解继承的实际应用。
实验结果:通过实验,我们成功地创建了父类和子类,并验证了继承的正确性。
我们还成功地重写了父类的方法,实现了多态性的效果。
最后,我们还通过实际应用的例子,更好地理解了继承的实际应用。
实验总结:通过本次实验,我们深入理解和掌握了Java类的继承。
继承是面向对象编程中的重要概念,通过继承,我们可以实现代码的重用和扩展。
在实际应用中,继承也可以帮助我们更好地组织代码,提高代码的可读性和可维护性。
然而,继承也有一些限制和注意事项。
首先,Java中只支持单继承,即一个子类只能继承一个父类。
实验五 继承与派生实验报告

实验五继承与派生一、实验目的( 1 )熟练掌握类的继承,能够定义和使用类的继承关系。
( 2 )掌握派生类的声明与实现方法。
( 3 )掌握类构造函数的初始化列表与作用域分辨符的使用方法。
二、实验工具与准备工作在开始实验前,应回顾或复习相关内容。
需要一台主算机,其中安装有VisualC + + 6 .0 、VisualC + + 2005 、VisualC + + 2005 ExpreSS 、Dev 一C + +或MinGW Developer Studio 等集成开发环境软件。
三、实验内容完成设计性实验项目8.7 创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。
再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。
三个类中分别包含数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月的销售额。
要求各类中都包含成员函数pay,用来计算雇员的月薪,并假定:普通工人的月薪=每月生产的产品数×每件产品的赢利×20%科研人员的月薪=每月的工作时数×每小时工作的酬金销售人员的月薪=月销售额×销售额提成。
#include<iostream>using namespace std;class employee{protected:char name[20];int empNo;float salary;public:employee(char *cp="李强",int no=1001);employee(employee&);void setname(char *cp);void setempNo(int no);void setsalary(float sa);char*getname();int getempNo();float getsalary();void display();employee compsalary(employee *emp);};employee::employee(char *cp,int no){int i=0;while(*cp){name[i]=*cp;i++;cp++;}name[i]='\0';empNo=no;}employee::employee(employee &em) {int i=0;while([i]){name[i]=[i];i++;}name[i]='\0';empNo=em.empNo;salary=em.salary;}void employee::setname(char *cp) {int i=0;while(*cp){name[i]=*cp;i++;cp++;}name[i]='\0';}void employee::setempNo(int no) {empNo=no;}void employee::setsalary(float sa) {salary=sa;}char*employee::getname(){return name;}int employee::getempNo(){return empNo;}float employee::getsalary(){return salary;}void employee::display(){cout<<"工号为"<<empNo<<"的雇员"<<name<<"的月薪为"<<salary<<endl; }employee employee::compsalary(employee *emp){if(this->salary>=emp->salary)return *this;elsereturn *emp;}class worker : public employee{public:worker(char*,int,int);void setproductNum(int n){ productNum=n;}int getproductNum(){ return productNum;}void pay();private:int productNum;static float proper; //每件产品的利润};float worker::proper=30; //假设每件产品的利润为30元worker::worker(char *name,int no,int pronum):employee(name,no){productNum=pronum;}void worker::pay(){salary=productNum*proper*0.2;}class technician : public employee{public:technician(char*,int,float);void sethours(float h){ workHours=h;}float gethours(){ return workHours;}void pay();private:float workHours;static float payperhour; //科研人员每小时工作的酬金};float technician::payperhour=50; //假设科研人员每小时工作的酬金为50元technician::technician(char *name,int no,float hours):employee(name,no){workHours=hours;}void technician::pay(){salary=workHours*payperhour;}class salesman : public employee{public:salesman(char*,int,float);void setmonthlysales(int num){ monthlysales=num;}int getmonthlysales(){ return monthlysales;}void pay();private:float monthlysales;static float percent; //销售人员的销售提成};float salesman::percent=0.6; //假设销售人员的销售提成为60% salesman::salesman(char *name,int n,float sn):employee(name,n){monthlysales=sn;}void salesman::pay(){salary=monthlysales*percent;}void main(){worker w1("王某",1001,1000);technician t1("李某",1002,200);salesman s1("许某",1003,10000);w1.pay();t1.pay();s1.pay();cout<<"工人"<<w1.getname()<<"的月薪为"<<w1.getsalary()<<"元\n";cout<<"科研人员"<<t1.getname()<<"的月薪为"<<t1.getsalary()<<"元\n";cout<<"销售人员"<<s1.getname()<<"的月薪为"<<s1.getsalary()<<"元\n";}8.8 创建一个automobile类表示汽车,其中包含数据成员brand和speed,分别表示汽车的品拍和行驶速度;成员函数run和stop表示行驶和停止。
C++上机实验报告实验五

age=n;
}
//数据输出函数
voidDog::showNumber()
{
cout<<"Number:"<<number<<endl;
}
void Dog::showAge()
{
cout<<"Age:"<<age<<endl;
}
intmain()
{
Dogdog1(12,0);
ﻩdog1.setAge(7);
ﻩvoid showNumber();
ﻩvoid showAge();
};
Animal::Animal(int a)//Animal构造函数
{
age=a;
}
Dog::Dog(intn,inta)//Dog构造函数
{
number=n;
ﻩage=a;
}
voidDog::setAge(int n)//Dog成员函数,setAge
error C2248:‘age’ :cannot access privatemember declaredin class ‘Animal’
把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。
2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。
3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。
4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。
子类的继承实验报告

#### 一、实验目的1. 理解Java中类的继承机制。
2. 掌握子类继承父类属性和方法的基本方法。
3. 熟悉方法覆盖(重写)和构造函数的继承。
4. 了解多态的概念及其在继承中的应用。
#### 二、实验环境1. 开发工具:Eclipse IDE2. 编程语言:Java3. 操作系统:Windows 10#### 三、实验内容本次实验主要围绕以下几个内容展开:1. 创建一个父类`Animal`,包含基本属性和方法。
2. 创建几个子类,如`Dog`、`Cat`等,继承自`Animal`类。
3. 在子类中重写父类的方法,以展示多态性。
4. 创建一个测试类,测试父类和子类的方法调用。
#### 四、实验步骤1. 创建父类`Animal`:```javapublic class Animal {private String name;private int age;public Animal(String name, int age) { = name;this.age = age;}public void eat() {System.out.println(name + " is eating."); }public void sleep() {System.out.println(name + " is sleeping."); }public String getName() {return name;}public int getAge() {return age;}}```2. 创建子类`Dog`:```javapublic class Dog extends Animal {public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(getName() + " is eating bones.");}@Overridepublic void sleep() {System.out.println(getName() + " is sleeping in the kennel."); }}```3. 创建子类`Cat`:```javapublic class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(getName() + " is eating fish.");}@Overridepublic void sleep() {System.out.println(getName() + " is sleeping on the sofa."); }}```4. 创建测试类`TestInheritance`:```javapublic class TestInheritance {public static void main(String[] args) {Animal dog = new Dog("Buddy", 5);Animal cat = new Cat("Kitty", 3);dog.eat();dog.sleep();cat.eat();cat.sleep();}}```5. 编译并运行程序:- 使用Eclipse IDE打开实验项目,将上述代码分别放入对应的Java文件中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public void actionPerformed(ActionEvent event)
{
if (urlStack.size() <= 1) return;
try
{
// get URL from back button
urlStack.pop();
// show URL in text field
3.用URL对象作为参数,调用setPage()方法,将HTML文件读到JeditorPane容器中,在该容器中的HTML文件,会被解释执行,即可看到网页的运行效果。
4.窗口中按BorderLayout页面布局各组件。
二、实验题目:
用户在JTextField中输入URL,
按回车或单击访问键(JButton),程序利用JEditorPane来显示网页内容
editorPane.setPage(url.getText());
}
catch (IOException e)
{
editorPane.setText("Exception: " + e);
}
}
};
JButton loadButton = new JButton("Load");
loadButton.addActionListener(listener);
*/
class EditorPaneFrame extends JFrame
{
public EditorPaneFrame()
{
setTitle("EditorPaneTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
final Stack<String> urlStack = new Stack<String>();
frame.setVisible(true);
}
}
/**
This frame contains an editor pane, a text field and button
to enter a URL and load a document, and a Back button to
return to a previously loaded document.
class EditorPaneTest
{
public static void main(String[] args)
{
JFrame frame = new EditorPaneFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionListener listener = new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try
{
// remember URL for back button
urlStack.push(url.getText());
panel.add(url);
panel.add(loadButton);
panel.add(backButton);
panel.add(new JLabel("Editable"));
panel.add(editable);
add(panel, BorderLayout.SOUTH);
}
private static final int DEFAULT_WIDTH = 600;
三、实验步骤(详细的基本操作步骤)
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import .*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
final JEditorPane editorPane = new JEditorPane();
final JTextField url = new JTextField(30);
// set up hyperlink listener
editorPane.setEditable(false);
editorPane.addHyperlinkListener(new
{
editorPane.setText("Exception: " & set up checkbox for toggling edit mode
final JCheckBox editable = new JCheckBox();
editable.addActionListener(new
HyperlinkListener()
{
public void hyperlinkUpdate(HyperlinkEvent event)
{
if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
try
{
// remember URL for back button
【JAVA程序设计】实验报告
班级:计12本2学号:1212210222姓名:张浩
实验5子类与继承
实验类型
设计
实验日期
2014-12-12
实验地点
2s-417
实验时间(星期节次)
星期五三四节
指导教师
刘红霞
成绩
一、实验目的及要求:
1.创建URL类的对象,将URL对象指向要获取的网站的HTML文件。
2.定义JEditorPane对象,对象调用setEditable()方法将编辑属性设为false。
}
});
add(new JScrollPane(editorPane), BorderLayout.CENTER);
// put all control components in a panel
JPanel panel = new JPanel();
panel.add(new JLabel("URL"));
private static final int DEFAULT_HEIGHT = 400;
}
四、实验总结:
本次试验让我们对交互界面JTextField、JButton、JEditorPane的基本操作有了初步的了解与掌握,对于URL类的创建也得到了练习。
url.addActionListener(listener);
// set up back button and button action
JButton backButton = new JButton("Back");
backButton.addActionListener(new
ActionListener()
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
editorPane.setEditable(editable.isSelected());
}
});
// set up load button for loading URL
urlStack.push(event.getURL().toString());
// show URL in text field
url.setText(event.getURL().toString());
editorPane.setPage(event.getURL());
}
catch (IOException e)
String urlString = urlStack.peek();
url.setText(urlString);
editorPane.setPage(urlString);
}
catch (IOException e)
{
editorPane.setText("Exception: " + e);
}