实验五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编程环境,认识Java程序结构。
二、实验内容:在JDK或者V isual J++环境下编写简单的输入输出程序。
三、实验要求:1. 接收一个键盘输入的字符;2. 输出一条简单的问候信息;3. 写出实验报告,要求对程序结构做出详细的解释。
四、实验学时:2学时五、实验步骤:1.进入Java编程环境;2. 新建一个Java文件,命名为inOut.java;3. 定义主方法static public void main(String[ ] args);在方法体中调用System.in.read方法接收一个键盘输入的字符;调用System.out.println()方法,使程序输出一条问候信息;4. 编译运行程序,观察运行情况和输出结果。
(如果使用JDK环境,调用javac.exe和java.exe编译和执行程序)六、选作实验编写Java Applet程序实现上述功能。
实验二 Java语言基础训练一、实验目的:熟悉Java基本语法,练习使用Java的数据类型和控制结构,实现简单的数据和字符串操作。
二、实验内容:编写Java程序,输出1900年到2000年之间的所有润年。
三、实验要求:1. 正确使用Java语言的控制结构;2. 从屏幕输出1900年到2000年之间的所有润年;3. 写出实验报告。
四、实验学时:2学时五、实验步骤:1.进入Java编程环境;2. 新建一个Java文件,命名为runY ear.java;3. 定义主方法,查找1900到2000年之间的润年,并输出它们;4. 编译运行程序,观察输出结果是否正确。
六、选作实验编写程序,查找一个字符串中是否包含指定的字符。
实验三面向对象基础熟悉Java类的结构,掌握类的定义、方法和属性的定义以及对象的实现,掌握类的继承。
Java实验
实验一熟悉Java开发环境(验证性2学时)一、实验目的与要求:1 掌握Java Application程序的开发过程并编写第一个Java Application程序*2 掌握Java Applet程序的开发过程并编写第一个Java Applet程序。
*3 练习简单的HTML文件配合Java Applet使用。
4 熟悉jdk的使用二、实验内容:1 编写一个Java Application程序,在屏幕上显示”This is my first java program!”.*2 编写第一个Java Applet 程序,在屏幕上显示”This is my first Java Applet!”三、实验步骤:1、jdk的使用jdk开发工具包可以从网站下载,jdk不是集成编译环境,须手动运用命令行程序进行编译和解释执行1)编辑.java文件可以在记事本或其他纯文本编辑器中编辑,保存时把文件扩展名定为.java即可,当然要注意文件名命名的要求2)编译生成.class文件进入dos系统进行编译(如图1.1所示),格式如javac MyFirstApplication.java,要注意图1.1进入命令行看javac.exe的路径并且MyFirstApplication.java文件路径和javac.exe路径一样。
编译成功后就能在浏览器中看见多了一个MyFirsApplication.class或更多的.class文件。
如图1.2所示图1.2使用jdk编译MyFirstApplication.java文件3)解释执行Application程序:同样是在dos系统下解释执行,格式如java MyFirstApplication,注意.class后缀别加,如图1.3所示。
图1.3解释执行MyFirstApplication.class程序* applet程序进入dos系统进行编译,格式如javac MyFirstApplet.java,要注意看javac.exe的路径并且MyFirstApplet.java文件路径和javac.exe路径一样。
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. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
JAVA实验报告心得
北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目: java上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间: 2012年12月19日版本: 1.0.0指导教师:北京联合大学-信息学院编制实验1 熟悉java运行环境实验目的:熟悉jdk环境和操作,编写简单的java应用程序。
心得体会:在该实验中,我碰到的问题是jdk环境变量的设置。
解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。
实验2 选择语句练习实验目的:正确理解并能够熟练操作和使用java的if和switch语句。
心得体会:我个人感觉有了c的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟c非常相近,所以上手比较快。
但是在这次程序中,首次涉及到了java程序的数据输入,与c区别很大。
但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。
在第二个小题中还涉及到了charat()方法,经查阅jdk 文档,知道charat()方法返回一个位于提供给它的参数索引处的字符,如: str.chatat(0)检索str中的第一个字符,str.charat(str.length()-1)检索最后一个字符。
我运用此方法解决了比较字符串间首字母异同的问题。
实验3 迭代练习实验4 方法的实现练习实验目的:声明、定义和调用方法,理解实参和形参的含义。
心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。
方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。
实验5 简单类型数组练习实验目的:学习创建简单类型的数组,并能用循环语句处理数组。
心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。
在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。
java实验指导书
实验一java开发环境及语言基础实验目的(1)确保正确配置java开发环境。
(2)了解javac和java命令的使用。
(3)熟悉java中的运算符。
(4)掌握条件语句和循环语句的使用。
(5)掌握通过命令行参数接受数据。
(6)掌握用Scanner类接受数据。
实验内容(1)在控制台中输入java命令,查看输入结果。
(2)编写一个java程序,计算半径为3.0的圆周长和面积并输出结果。
(3)求a+aa+aaa+...+a...a(n个)的和,其中a为1~9之间的整数。
例如,当a=3、n=4时,求3+33+333+3333的和。
(4)给定一个正整数m,统计其位数,分别打印每一位数字,再按照逆序打印出各位数字。
(5)用Scanner类方法输入三角形三边求三角形面积。
实验要求(1)JDK的安装及配置。
(2)在DOS及eclipse下编辑、编译运行第一个java程序:hello world。
(3)求圆周长和面积用方法实现,主函数调用。
(4)从命令行输入1~9之间的整数a,当所求的和大与106时,输出相应的a值及所求的和值。
(5)用Scanner类的方法输入正整数m,m的值不应该超过99999,否则给出错误信息。
应引入包:import java.util.Scanner,然后在需要的方法中实例化对象:Scanner sc = new Scanner(System.in),最后调用对象的next方法,如int n=nextInt(),接受整数。
实验二数组实验目的(1)掌握数组的定义和使用方法。
(2)熟悉数组的排序、查找的方法。
(3)巩固循环的使用。
实验内容(1)使用for循环,将二维数组的行与列互换,即完成矩阵的转置。
(2)编写数组的排序程序。
(3)编写杨辉三角。
实验要求(1)编写一个界面1 选择排序2 冒泡排序3插入排序4 快速排序5 退出当选择1、2、3、4、5的时候完成相应的功能。
(2)杨辉三角形状为等腰三角形实验三字符串实验目的(1)掌握正则表达式的使用。
《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输入、输出和异常处理
实验四Java输入、输出和异常处理一、实验目的1.了解I/O流的使用;2.掌握常见的输入/输出流类及其主要方法。
3.熟悉S y s t e m类,掌握标准输入/输出。
4.学会利用Tr y-c a t c h-f i n a l l y语句来捕获和处理异常;5.掌握自定义异常类的方法。
二、实验要求1.使用标准数据流的应用程序。
2.使用文件输入输出流的应用程序。
3.通过编程理解系统异常处理的机制和创建自定义异常的方法。
三、实验内容(一)使用标准数据流的应用程序标准数据流指在字符方式下(如D O S提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。
1.程序功能:将键盘上输入的字符在屏幕上显示出来。
2.编写S Y4_1.j a v a程序文件,源代码如下:c l a s s S Y4_1{p u b l i c s t a t i c v o i d m a i n(S t r i n g[]a rg s)t h r o w s j a v a.i o.I O E x c e p t i o n {b y t e b u ff e r[]=n e w b y t e[10];S y s t e m.o u t.p r i n t l n("从键盘输入不超过10个字符,按回车键结束输入:");i n t c o u n t=S y s t e m.i n.r e a d(b u f f e r);//读取输入的字符并存放在缓冲区b u ff e r中S y s t e m.o u t.p r i n t l n("保存在缓冲区b u ff e r中元素的个数为:"+c o u n t);S y s t e m.o u t.p r i n t l n("b u f f e r中各元素的值为:");f o r(i n t i=0;i<c o u n t;i++){S y s t e m.o u t.p r i n t(""+b u ff e r[i]);//在屏幕上显示b u ff e r 元素的值}S y s t e m.o u t.p r i n t l n();S y s t e m.o u t.p r i n t l n("输出b u ff e r字符元素:");S y s t e m.o u t.w r i t e(b u ff e r,0,b u f f e r.l e n g t h);}}3.编译、运行S Y4_1.j a v a文件。
《java程序设计》实验指导书(09高职)
实验一 Java实验环境的建立一、实验目的1.掌握Java编程环境的搭建过程;2.掌握Jcreator pro软件的使用方法;3.能使用Java doc文档。
二、实验内容1.下载并安装JDK1.6,配置JDK环境变量;2.下载Javadoc压缩包并解压在JDK安装路径下;3.下载Jcreator pro 4.0并安装和配置使用环境;4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。
①Java application程序代码如下:public class HelloJava{public static void main(String args[]){System.out.println("Hello Java!");}}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){g.drawString("Hello!",30,30);}}三、试验要求1、预习试验内容并写出上机报告。
2、实验中出现的问题及实验体会。
实验二 Java语言程序设计训练一、实验目的:1.输入、输出操作实现原理和方法2.掌握程序流程控制的实现方法3.掌握数组的定义和操作方法二、实验内容1.计算 Result=1!+2!+3!+ (10)2.计算1---50之间所有素数的和。
3. 产生10个100之内的随机整数输出,并把这10个数按从小到大的顺序输出。
4. 随机产生20个50~100间的整数,输出这20个数并找出最大数及最小数输出。
5.试编写程序,实现求几何形状(长方形、正方形、圆形)的周长、面积。
(可任选其一)6.验证书中的例题。
三、试验要求1、预习试验内容并写出上机报告。
2、实验中出现的问题及实验体会。
JAVA事件处理机制
JAVA事件处理机制JAVA事件处理机制是指在JAVA编程中对事件进行监听和响应的一种机制。
在JAVA中,事件是指用户在程序运行过程中进行的各种操作,如鼠标点击、键盘输入、窗口关闭等。
通过事件处理机制,程序可以在特定事件发生时触发相应的操作,从而实现与用户的交互。
在JAVA中,事件处理机制主要涉及到以下几个方面:事件源、事件监听器、事件对象和事件处理器。
事件源是指能够触发事件的对象,例如按钮、文本框等;事件监听器是指用来监听事件的对象,它实现了相应的事件监听接口;事件对象是指封装了事件源和事件信息的对象,它包含了发生事件的相关属性;事件处理器是指在事件被触发时需要执行的操作,可以通过事件监听器来定义。
事件处理机制通常包括以下几个步骤:1.创建事件源对象:例如创建一个按钮对象。
2.创建事件监听器对象:实现相应的事件监听接口,并重写事件处理方法。
3.将事件监听器对象注册到事件源对象中:通过调用事件源对象的方法将事件监听器对象注册到事件源对象中,使其能够监听事件源对象的事件。
4.触发事件:用户进行相应操作后,事件源对象会触发相应的事件。
5.事件源对象通知事件监听器对象:事件源对象会调用事件监听器对象的相应方法,将事件对象作为参数传递给事件监听器对象。
6.事件监听器对象执行操作:事件监听器对象接收到事件对象后,根据事件对象中的信息执行相应的操作。
通过事件处理机制,可以实现丰富的用户交互功能。
例如,在一个图形界面程序中,用户点击按钮时,可以触发按钮的点击事件,然后执行相应的操作,如弹出对话框、刷新界面等。
又如,用户在文本框中输入内容时,可以触发文本框的输入事件,然后进行相应的校验、处理等操作。
JAVA提供了丰富的事件监听接口和类库,使得事件处理变得更加方便。
例如,对于鼠标事件,可以使用MouseListener接口和MouseAdapter适配器类来实现对鼠标事件的监听和处理。
对于键盘事件,可以使用KeyListener接口和KeyAdapter适配器类来实现对键盘事件的监听和处理。
Java实验指导书2013版
第一部份绪论 (2)本课程实验的作用与任务 (2)本课程实验的基础知识 (2)本课程实验教学项目及其教学要求 (2)第二部份基本实验指导 (4)实验一:Java基本语法 (4)实验三:Java面向对象程序设计(一) (9)实验五:Java常用类 (18)实验七:Java集合 (21)实验九:GUI图形用户界面 (26)第一部份绪论本课程实验的作用与任务使学生进一步深刻理解Java语言基本概念、语法规则及程序结构,熟练掌握Java语言程序设计的基本方法,提高利用Java在网络环境下开发、设计应用程序的能力,从而进一步培养学生的创新能力和解决实际问题的能力。
熟悉JDK工具的编程和调试环境;熟练掌握选择和循环结构的程序设计;熟练掌握面向对象的程序设计思想,包括系统类的应用和用户自定义类;充分理解类的三种的特性:封装、继承和多态,特别是通过接口和抽象类理解多态;掌握图形用户界面的设计,特别是事件处理;掌握包的使用;掌握常用的输入输出流类的应用。
最后能根据实验的要求认真完成实验报告。
本课程实验的基础知识Java的基本数据类型包括:byte,short,int,long,double,char。
Java的数组属于引用类型的数据,是将相同类型的数据按顺序组成的一种符合数据类型。
Java的运算符有算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符,特别要注意它们的优先级。
Java的控制语句有if语句、switch语句、for语句、while语句、do-while语句。
类是组成Java程序的基本要素,类有两个重要的成员:成员变量和方法。
类是创建对象的模板,类将对象的属性和功能封装为一个整体。
成员变量和类变量的区别、实例方法和类方法的区别、方法的重载、成员的访问权限等都是实验课程所依据的重要理论。
继承、多态、接口、包及内部类都是Java中非常重要的概念。
Java使用“流”来读写数据。
Java的输入输出工作是通过FileInputStream类、FileReader 类、BufferedReader类、ByteArrayInputStream类、ByteArrayOutputStream类等完成的。
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实验报告-总结
实验报告□实践报告□课程名称:Java语言程序设计实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、Java异常处理多线程编程、图形用户界面编程实验、实践地点:致向楼301专业班级:软件1531 学号:2015006446学生姓名:关玉芬指导教师:相洁2017 年1月8日else System.out.print("输出结果为"+i*4);x.close();}}6. package shiyan;public class a6 {public static void main(String[] args) {int i,j=0;for(i=1900;i<=2100;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){ j++;if(j%5==0)System.out.println(i);else{System.out.print(i);System.out.print(" ");}}}}} 五、实验结果1.2.3.4.5.6.六、讨论、心得初步掌握了Eclipse集成开发环境。
掌握Java 基本数据类型、运算符与表达式、数组的使用方法,语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
、对JA V A程序设计有初步的了解System.out.println("字符串的单词数为"+num);sr.close();}}五、实验结果1..2.3.六、实验心得通过本次实验掌握数组的声明、分配空间及初始化;理解多维数组(重点掌握二维);掌握String 类的特点及常用方法的使用;掌握StringBuffer 类的特点及常用方法的使用;掌握String 类和StringBuffer 类的区别;掌握equal 方法与==的区别;但是本次练习中,我也出现了一些错误,是由于知识上的失误和不小心犯下的低级错误,但是我努力改正。
java实验报告-分析
实验报告□实践报告□课程名称:Java语言程序设计实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、Java异常处理多线程编程、图形用户界面编程实验、实践地点:致向楼301专业班级:软件1531 学号:2015006446学生姓名:关玉芬指导教师:相洁2017 年1月8日实验一Java语言基础一、实验目的和要求(1) 通过实验,掌握Java语言程序设计的基本方法。
(2) 学会Java语言中标示符的命名、运算符和表达式的应用。
(3) 熟练地掌握Java程序流程控制语句的应用。
二、实验内容1.编写应用程序,计算100(含100)以内所有偶数的和。
2.“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。
编写程序,求所有的水仙花数。
3.编写一个程序,求1-100间的素数。
4. 有一函数:x (x<1)Y= 3x-2 (1≤x<10)4x (x≥10)写一程序,给定x值,输出y值。
5. 使用for循环语句,编写程序输出以下图案。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆6.编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一行。
判断年是否为闰年的条件是:①若年号可以被4整除,而不能被100整除,则是闰年;②若年号可以被400整除,也是闰年。
三、主要仪器设备使用的计算机惠普:硬件配置Win7、软件环境eclipse四、实验代码1. public class a1 {public static void main(String[] args) {int i,sum=0;for(i=0;i<=100;i++){if(i%2==0)sum+=i;}System.out.println(sum);}}2. public class a2 {public static void main(String[] args) {int i,a,b,c;for(i=100;i<=999;i++){a=i%10;b=(i-a)%100/10;c=(i-b*10-a)/100;if(i==a*a*a+b*b*b+c*c*c){System.out.println(i);}}}}3. public class a3 {public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=2;i<=100;i++) {boolean t = false;for(int j=2;j<i;j++){if(i%j==0){t=false;break;}else {t=true;}}if(t) System.out.print(i+" ");}}}4. public class a4 {public static void main(String[] args) {int i,j;for(i=1;i<=4;i++){for(j=1;j<=((-1)*i+4);j++)System.out.print(" ");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}for(i=3;i>=1;i--){for(j=1;j<=((-1)*i+4);j++)System.out.print(" ");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}}}5. import java.util.*;public class a5 {public static void main(String[] args) {Scanner x=new Scanner(System.in);System.out.println("请输入一个大于1的整数");int i=x.nextInt();System.out.println("你刚才输入的数为"+i);if(i<1) System.out.print("输出结果为"+i);else if (i>=1&&i<10) System.out.print("输出结果为"+(i*3-2));else System.out.print("输出结果为"+i*4);x.close();}}6. package shiyan;public class a6 {public static void main(String[] args) {int i,j=0;for(i=1900;i<=2100;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){ j++;if(j%5==0)System.out.println(i);else{System.out.print(i);System.out.print(" ");}}}}} 五、实验结果1.2.3.4.5.6.六、讨论、心得初步掌握了Eclipse集成开发环境。
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程序设计课程--实验报告-实验05
(d)完成赋值语句,使change2包含与change1相同的字符,但是所有字符“O”全部要用“*”替换。
(e)完成赋值语句,将colledge和town两个字符串连接起来,并把值赋给change3(使用String类的concat方法)。
phraseLength = phrase.length();
middleIndex = phraseLength/2;
//get the substring for each half of the phrase
firstHalf = phrase.substring(0,middleIndex);
int phraseLength;//number of characters in the phrase String
int middleIndex;//index of the middle character in the String
String firstHalf;//first half of the phrase string
3.声明两个新的字符串类型变量city和state。添加语句,提示用户输入他们的籍贯所在的city和state,并使用Scanner类读入该信息。然后使用String类创建并打印一个新字符串,包含state名(全部大写),city名(全部小写),state名(全部大写)。如下例所示:
NORTH CAROLINAlilesvilleNORTH CAROLINA
//Get the lengths of the sides as input
System.out.print("Please enter the lengths of the two sides of" + "a right triangle(separate by a blank space):");
实验报告
《面向对象——java》课程设计实验报告一、设计目的:1.熟练掌握java面向对象编程。
2.选择适合的数据结构实现需求。
3.熟练使用各种控制结构。
4.掌握GUI组件、事件处理技术二、实验任务:设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下)程序要求:(1)、应具有相应的界面,可参考下图进行设计:(2)、操作符号定为:“+”、“-”、“*”、“/”、“(”、“)”等(3)、当用户点击面板中各组件输入表达式,点击“=”时。
文本框之前内容应清空,直接显示表达式运算结果。
例如:输入表达式“3+2*5”之后按“=”,直接显示“13”。
(4)、以上部分为必须完成的内容。
三、试验程序:import java.awt.*;import java.awt.event.*;class CalcAppDemo extends Frame{private TextField t_result;private Panel p_main;//主面板private Panel p_num;//数字面板private Panel p_oper;//操作符面板private Panel p_show;//显示面板private Button b_num[];//数字按钮private Button b_oper[];//操作符按钮public CalcAppDemo(String title){setTitle(title);t_result = new TextField("0.0",21);p_main = new Panel();p_num = new Panel();p_oper = new Panel();p_show = new Panel();p_main.setLayout(new BorderLayout());p_num.setLayout(new GridLayout(4,3,1,1));p_oper.setLayout(new GridLayout(4,2,1,1));b_num = new Button[12];//初始化for(int i = 0;i < 9;i++){b_num[i] = new Button(new Integer(i+1).toString()); }b_num[9] = new Button("0");b_num[10] = new Button("cls");b_num[11] = new Button(".");for(int i = 0;i < 12;i++){p_num.add(b_num[i]);}b_oper = new Button[8];b_oper[0] = new Button("+");b_oper[1] = new Button("-");b_oper[2] = new Button("*");b_oper[3] = new Button("/");b_oper[4] = new Button("pow");b_oper[5] = new Button("sqrt");b_oper[6] = new Button("+/-");b_oper[7] = new Button("=");//创建控件for(int i = 0;i < 8;i++){p_oper.add(b_oper[i]);}t_result.setEditable(false);p_show.add(t_result,BorderLayout.NORTH); //文本框在显示面板的北边p_main.add(p_show,BorderLayout.NORTH); //显示面板在主面板上的北边p_main.add(p_num,BorderLayout.WEST);p_main.add(p_oper,BorderLayout.EAST); //操作符面板在主面板上的东边this.add(p_main,BorderLayout.CENTER); //主面板在框架(主窗口)的中间setSize(400,400);setResizable(false);pack();this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});ButtonListener bl = new ButtonListener(); //监听器对象for(int i=0;i<12;i++){b_num[i].addActionListener(bl); //注册监听器}for(int i = 0;i < 8;i++){b_oper[i].addActionListener(bl);}}class ButtonListener implements ActionListener { //监听器类是内部类private String lastOp; //存储上一次操作符private String strV al; //存储数字对应的字符串private double total; //总数private double number; //存储新输入的数private boolean firsttime;//判断是否第一次按下的是操作符按钮private boolean operatorPressed;//判断是否已经按过操作符按钮ButtonListener( ){firsttime = true;strV al = "";}//事件处理器public void actionPerformed( ActionEvent e ){String s = ((Button)e.getSource()).getLabel().trim();if(Character.isDigit(s.charAt(0))){ //判断是操作数还是操作符handleNumber(s);}else{calculate(s); //计算}}//判断是一元操作符还是二元操作符,并根据操作符类型做计算void calculate( String op ){operatorPressed = true;if(firsttime&&!isUnary(op)){total = getNumberOnDisplay();firsttime = false;}if (isUnary(op)){handleUnaryOp(op);}else if (lastOp != null){handleBinaryOp(lastOp);}if (!isUnary(op)){ //存储上一次按下的操作符lastOp = op;}}//判断是否是一元操作符boolean isUnary(String s){return s.equals( "=" )|| s.equals( "cls" )|| s.equals( "sqrt" )|| s.equals( "+/-" )|| s.equals( "." );}//处理一元操作符void handleUnaryOp( String op ){if ( op.equals( "+/-" ) ){//将显示框中的数字取反number = negate(getNumberOnDisplay()+"");t_result.setText("");t_result.setText( number + "");return;}else if (op.equals(".")){handleDecPoint();return;}else if(op.equals("sqrt")){number = Math.sqrt(getNumberOnDisplay());t_result.setText("");t_result.setText(number+"");return;}else if(op.equals("=")){//在按下"="前已经按下一个二元运算符if(lastOp!=null&&!isUnary(lastOp)){handleBinaryOp(lastOp);}lastOp=null;firsttime=true;return;}else{clear();}}//处理二元运算符void handleBinaryOp(String op){if(op.equals("+")){total += number;}else if(op.equals("-")){total -= number;}else if(op.equals("*")){total *= number;}else if(op.equals("/")){try{ //异常处理total /=number;}catch(ArithmeticException ae){ }}else if(op.equals("pow"))total=Math.pow(total,number);// t_result.setText("");lastOp = null;// strV al = "";number = 0;t_result.setText(total+"");}//该方法用于处理数字按钮void handleNumber(String s){if (!operatorPressed){ //连接按下的数字按钮的值strV al+=s;}else{ //当按下操作符按钮时,清除strV al并存储输入的第一个数值operatorPressed = false;strV al = s;}//将strV al转换为doublenumber=new Double(strV al).doubleV alue();t_result.setText("");t_result.setText(strV al);}//该方法用于按下"."按钮void handleDecPoint(){operatorPressed = false;//如果该字符串中无".",放置一个"."在字符串末尾if ( strV al.indexOf( "." ) < 0 ) {strV al+=".";}t_result.setText("");t_result.setText( strV al );//该方法用于将一个数求反double negate( String s ){operatorPressed = false;//如果是一个整数,去掉小数点后面的0if ( number == ( int ) number ){s = s.substring(0, s.indexOf( "." ) );}//如果无"-"增加在该数的前面if ( s.indexOf( "-" ) < 0 ){strV al = "-"+s;}else{//如果有"-"则去掉strV al = s.substring( 1 );}return new Double( strV al ).doubleV alue();}//将显示框中的值转换为Doubledouble getNumberOnDisplay() {return new Double(t_result.getText()).doubleV alue();//清除屏幕并设置所有的标识void clear(){firsttime = true;lastOp = null;strV al = "";total = 0;number = 0;t_result.setText("0");}}public static void main(String args[]){Calc AppDemo c = new CalcAppDemo("简单的计算器程序");c.setV isible(true);}}四、程序测试程序运行结果如图:,经测试无较大BUG,基本正确。
java综合实验报告
java综合实验报告Java 综合实验报告一、实验目的本次 Java 综合实验的主要目的是通过实际的编程项目,深入理解和掌握Java 语言的核心概念、编程技巧以及面向对象的编程思想。
同时,提高解决实际问题的能力,培养良好的编程习惯和代码规范。
二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容本次实验主要包括以下几个方面的内容:1、Java 基础语法的应用,如变量、数据类型、控制流语句(ifelse、for、while 等)。
2、面向对象编程的实现,包括类、对象、属性、方法、封装、继承和多态等概念的运用。
3、异常处理机制的使用,学会捕获和处理常见的运行时异常。
4、集合框架的操作,如 List、Set、Map 等数据结构的使用。
5、文件 I/O 操作,能够读取和写入文本文件、二进制文件。
四、实验步骤及实现过程(一)基础语法练习首先,进行了 Java 基础语法的练习。
创建了一个简单的控制台应用程序,实现了输入两个整数,计算它们的和、差、积、商,并输出结果。
在这个过程中,熟练掌握了变量的声明和赋值、数据类型的转换、算术运算符和控制流语句的使用。
```javaimport javautilScanner;public class BasicArithmetic {public static void main(String args) {Scanner scanner = new Scanner(Systemin);Systemoutprint("请输入第一个整数: ");int num1 = scannernextInt();Systemoutprint("请输入第二个整数: ");int num2 = scannernextInt();int sum = num1 + num2;int difference = num1 num2;int product = num1 num2;double quotient =(double) num1 / num2;Systemoutprintln("两数之和: "+ sum);Systemoutprintln("两数之差: "+ difference);Systemoutprintln("两数之积: "+ product);Systemoutprintln("两数之商: "+ quotient);scannerclose();}}```(二)面向对象编程实践接下来,通过创建一个“学生”类来实践面向对象编程的概念。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五Java事件处理实验目的1.掌握Java语言中的事件处理方法2.掌握Java语言中事件源、监视器和处理事件的接口的概念实验内容1.图形用户界面设计程序(ArtFo nt.java)在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。
分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。
要求实现如下功能:当在文本框中输入文字后回车,在文本域中显示输入的文字。
当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。
当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。
当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字体样式。
当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。
当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。
图1程序界面运行效果package Sy;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ArtFont extends JFrame {static ArtFont artFont;JComboBox fontType;// 字体样式下拉框JComboBox fontSize;// 字体大小下拉框JComboBox windowStyle;// 窗体样式下拉框JCheckBox boldBx;// 粗体按钮JCheckBox italicBx;// 斜体按钮JButton colorBtn;// 颜色按钮String[] fontNames;// 字体名称String[] fontSizes;// 字体大小JLabel label;// 输入提示标签JTextField inputText;// 文字输入框JTextArea txtArea;// 文字显示区JPanel northPanel;// 字体设置JPanel centerPanel;// 显示效果区JPanel southPanel;/样式设置Font font;int boldStyle, italicStyle;int fontSizeStyle;String fontNameStyle;Color colorStyle = Color.black;// 设置字体的默认颜色为黑色String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " };public ArtFont() {super(”字体设置");// 设置默认字体boldStyle = 0;italicStyle = 0;fontSizeStyle = 10;fontNameStyle = "宋体 ";font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);northPanel = getNorthPanel();centerPanel = getCenterPanel();southPanel = getSouthPanel();// 设置容器Container container = getContentPane();container.setLayout(new BorderLayout());add(northPanel , BorderLayout.NORTH);// 将 northPanel 添加到窗体的北部add(centerPanel , BorderLayout.CENTER);// 将 centerPanel 添加到窗体的中部add(southPanel , BorderLayout.SOUTH);// 将 southPanel 添加到窗体的南部 setSize(500, 300);setLocationRelativeTo(null);// 将窗体位于屏幕的中央setVisible(true);}private JPanel getNorthPanel() {JPanel panel = new JPanel();label = new JLabel("输入 ");inputText = new JTextField(10);boldBx = new JCheckBox("粗体 ");italicBx = new JCheckBox("斜体 ");colorBtn = new JButton("颜色 ");inputText.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 文本输入 txtArea.setText(inputText.getText());}});boldBx.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 加粗if(e.getStateChange() == ItemEvent.SELECTED) boldStyle = 1;elseboldStyle = 0;font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});italicBx.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 斜体if(e.getStateChange() == ItemEvent.SELECTED) italicStyle = 1;elseitalicStyle = 0;font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});colorBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 改变颜色colorStyle = JColorChooser.showDialog(null, "请选择一种颜色 ",colorStyle);colorBtn.setForeground(colorStyle);txtArea.setForeground(colorStyle);font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});panel.add(label);panel.add(inputText);panel.add(boldBx);panel.add(italicBx);panel.add(colorBtn);return panel;}private JPanel getCenterPanel() {JPanel panel = new JPanel();panel.setLayout(new BorderLayout());txtArea = new JTextArea();panel.add(new JScrollPane(txtArea) , BorderLayout.CENTER);return panel;}private JPanel getSouthPanel() {JPanel panel = new JPanel();//获得系统默认字体GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();fontNames = ge.getAvailableFontFamilyNames();fontType = new JComboBox(fontNames);//设置字体大小fontSizes = new String[63];for (int i = 0; i <fontSizes.length; i++) {fontSizes[i] = Integer.toString(i+10);}fontSize = new JComboBox(fontSizes);windowStyle = new JComboBox(style);fontType.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 字体的类型fontNameStyle = (String) e.getItem();font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});fontSize.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 字体的大小String s = (String) e.getItem(); fontSizeStyle = Integer.parseInt(s);font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);txtArea.setFont(font);}});windowStyle.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// 改变窗口String s = (String) e.getItem();String className = "";if (s.equals("Windows 显示效果 "))。