1、Java高级程序设计高级程序设计第第1章章 Java入门基础入门基础第1章 Java入门基础1.1 Java开发环境的安装与配置开发环境的安装与配置1.2 Java语言基础语言基础1.3 Java面向对象编程基础面向对象编程基础本章目标 Java Application开发环境的安装和配置 Java语言基础 Java面向对象编程基础本章任务本章任务 任务1 安装和配置JDK、Eclipse 任务2 Eclipse中开发Java Application 任务3 实现四则运算 任务4 找出100以内的所有素数 任务5 定义类、使用对象 任务6 运用继承1.1 Java开发环境的安装与配置开发环境的
2、安装与配置任务任务1 安装和配置安装和配置JDK、EclipseStep1:下载JDKStep2:配置JDKStep3:下载EclipseStep4:配置Eclipse工作空间任务任务2 Eclipse中开发中开发Java ApplicationStep1:新建项目Step2:创建和编辑Java类Step3:运行并查看输出知识点:知识点:Java Application程序程序 一个Java Application程序往往由若干个类组成,其中包含public static void main(String args)方法的类是主类,main()方法是Java Application程序的执行入
3、口,由JVM调用执行。1.2 Java语言基础语言基础任务任务3 实现实现四则运算四则运算编程实现2个数据的四则运算功能:用户输入2个数据,显示这2个数分别进行加、减、乘、除法运算后的结果,运行效果如图所示。知识点:知识点:Java语法基础语法基础一、标识符和关键字二、数据类型三、运算符任务任务4 找出找出100以内的所有以内的所有素数素数编程实现:找出100以内的所有素数并输出。运行效果如图所示。知识点:知识点:Java的流程控制语句的流程控制语句一、分支语句二、循环语句三、跳转语句1.3 Java面向对象编程基础面向对象编程基础任务任务5 定义类、使用定义类、使用对象对象编程实现:描述学生
4、对象,学生基本信息包括学号、班级、姓名、性别、年龄;提供显示学生基本信息的功能;提供计算3门课程平均分的功能,假定课程分数直接指定。运行效果如图所示。知识点:类与对象知识点:类与对象任务任务6 运用继承运用继承编程实现:用Person类描述人的一般属性,用继承方式创建新类Student和Teacher,分别用于描述特定的人群学生和教师,分别创建学生对象、教师对象,并显示他们的相关信息。运行效果如图所示。知识点:包和访问控制符、继承、知识点:包和访问控制符、继承、接口接口一一、包和访问、包和访问控制符控制符 访问控制符访问控制符可访问范围可访问范围private缺省缺省protectedpubl
5、ic同一类中可见同一类中可见是是是是同一个包中对子类可见同一个包中对子类可见否是是是同一个包中对非子类可见同一个包中对非子类可见否是是是不同包中对子类可见不同包中对子类可见否否是是不同的包中对非子类可见不同的包中对非子类可见否否否是二、二、继承继承 继承是面向对象编程技术的一块基石,因为它允许建立分等级层次的类,使得程序结构清晰,降低编码和维护的工作量。三、三、接口接口 接口只包含若干个抽象方法和常量的定义,形成一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以帮助实现类似于类的多重继承的功能。实训任务实训任务实训 1-1 编写一个Java Application,接受用户输入的1
6、0个整数,比较并输出其中的最大值和最小值。实训 1-2 编写一个Java Application,接受用户输入的一个112之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。实训 1-3 编写一个Java Application,输入一个人的成绩,判断他是否是及格、不及格或优秀。实训任务实训任务实训 1-4 编写一个Java Application,接受用户输入的字符,比较并输出按字典顺序排序的字符。实训 1-5 定义一个表示学生的类Student,包括属性“学号”、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、“获得班号”、“获
7、得性别”、“获得姓名”、“获得年龄”(汉字或数字)、“修改年龄”,并在此基础上编写Java Application程序创建Student类的对象张一、王二,并显示他们的信息。实训任务实训任务实训 1-6 创建一个Rectangle类,该类拥有属性length和width,每个属性的默认值均为1;该类拥有方法perimeter和area,分别用于计算矩形的周长和面积;该类还有设置和读取属性length和width的方法。创建一个Rectangle类的子类,设置方法应检查length和width的属性值是否大于0.0且小于20.0的浮点数,在此基础上编写程序测试Rectangle类。实训任务实训任
8、务实训 1-7 一家大公司对售货员按任务提成发放工资。每个售货员的基本工资是每周200元,另外提成为本周个人总零售额的9%。例如,某个售货员在一周内推销了总额为5000元的商品,那他在这一周内的工资为基本工资200元加上5000元乘以9%,即650元。公司提供了上周每个售货员的销售清单,每种商品的价格如下:商品 价格 1 233.99 2 129.75 3 199.95 4 350.89 开发一个Java应用程序,输入一个售货员上周销售的商品类型和数量,然后计算并显示这个销售员的收入,对销售员所推销的商品数量没有限制。Java高级程序设计高级程序设计第第2章章 异常处理异常处理第2章 异常处理
9、2.1 什么是什么是异常异常2.2 处理处理异常异常2.3 自定义异常与自定义异常与throw关键字关键字2.4 throws关键字关键字2.5 Java的内置异常的内置异常本章目标 理解异常及其作用 使用try-catch-finally语句捕获和处理异常 使用throw、throws关键字本章任务本章任务 任务1 识别异常 任务2 处理异常 任务3 自定义百分制分数异常 任务4 使用throws关键字2.1 什么是异常什么是异常任务任务1 识别异常识别异常编程实现整数除法运算:接收用户输入的2个整数,除法运算后输出结果。根据用户的不同输入,可能产生如图所示的不同结果。知识点:异常的概念、异
10、常处理机知识点:异常的概念、异常处理机制制一、异常的概念一、异常的概念程序开发中一般会出现两种问题:第一种,在编译期间被检测出来的错误,我们称之为语法错误,比如关键字拼写错误、语句丢失分号、变量名未定义等。如果程序中存在这类错误,将不能编译通过,不能生成字节码。第二种,没有语法错误编译成功了,但在程序运行期间出现错误,我们称之为运行错误,比如被访问对象没有正常初始化、访问数组元素时下标值超出范围等等。这种运行错误如果没有得到及时的处理,可能会造成程序提前中断、数据遗失乃至系统崩溃等问题。这种运行错误也就是我们所说的运行错误也就是我们所说的“异常异常”。二、异常处理机制二、异常处理机制 为了解决
11、这种需要由程序员承担程序出错情况判断的不正规处理模式所带来的困难和阻碍,Java引入了异常处理机制,通过代码运行到出现错误的时候由系统抛出一个运行时异常,Java程序可以很容易地捕获并处理发生的异常情况。Java的异常类层次结构2.2 处理异常处理异常任务任务2 处理异常处理异常完善任务1中的IntDivide程序,对除法运算中除数为0的异常进行处理,即使用户输入0值不能进行除法运算时也不会再粗鲁地直接中断程序执行了,运行效果如图所示。知识点:知识点:try-catch-finally语句处理语句处理异异常常try/需要监视异常的代码块,该区域如果发生异常就匹配catch来决定程序如何处理ca
12、tch(异常类型1 异常的变量名1)/处理异常语句组1catch(异常类型2 异常的变量名2)/处理异常语句组2 finally/最终执行的语句组2.3 自定义异常与自定义异常与throw关键字关键字任务任务3 自定义百分制分数异常自定义百分制分数异常编程实现:根据用户输入的分数判定成绩等级并输出。分数规定为百分制,一旦用户输入的分数不符合百分制分数要求,则请用户重新输入,直至输入分数正确,判定等级并输出为止。运行效果如图所示。知识点:自定义异常、知识点:自定义异常、throw关关键字键字一、自定义一、自定义异常异常 /变量、构造方法、成员方法二、二、throw关键字关键字 ;2.4 thro
13、ws关键字关键字任务任务4 使用使用throws关键字关键字编程实现与任务3相同的根据分数判定等级并输出的功能。代码要求:将根据分数判等级的功能定义为方法,且方法内部不处理分数异常,而是将异常抛出给其调用者来进行处理。知识点:知识点:throws关键字为方法声明关键字为方法声明异常异常方法声明 ,/方法体,抛出异常2.5 Java的内置异常的内置异常在核心语言包java.lang中,Java定义了若干异常类型,其中多数从RuntimeException派生的异常都自动可用,它们不需要通知所有欲调用此方法的方法来检查该异常,因此不需要被包含在任何方法的throws列表中,也可以不用try-cat
14、ch捕获和处理。Java语言中,这样的异常被称作不受控异常(unchecked exceptions)。还有一些异常类型,它们必须由try-catch进行捕获和处理,或者不用try-catch捕获则应包含在方法声明的throws列表中,由方法的调用者进行捕获和处理,否则编译将不能通过,这样的异常称作受控的异常(checked exceptions)。实训任务实训任务实训 2-1 编写一个User类,类中包含String类型成员变量username和password,在默认构造方法中将username赋值为“admin”,密码赋值为“1234”。定义checkUser(String userna
15、me,String password)方法,要求当参数username与类成员变量username不相符时抛出自定义异常NoSuchUserException,当用户名正确而password和类成员变量password不相符时抛出自定义异常PasswordDontMatchException。实训任务实训任务实训 2-2 创建帐户类,其中定义存钱、取钱、查询余额等三个方法,并自定义如下异常类型用于账户类:(1)AccountOverdrawnException:当有了这个要取出比帐户上更多的钱的尝试时。(2)InvalidDepositException:当无效钱数(小于0)存入时。Java高
16、级程序设计高级程序设计第第3章章 Java常用常用API第第3章章 Java常用常用API3.1API的的概念概念3.2字符串处理字符串处理3.3数学运算工具数学运算工具Math3.4日期时间处理日期时间处理3.5集合类集合类3.6泛泛型型本章目标 常见字符串处理 数学函数的运用、日期时间的处理 集合、迭代器的运用本章任务本章任务任务1 字符串加密与解密任务2 统计单词及其数量任务3 常见数学运算任务4 格式化日期任务5 保存和显示学生列表任务6 使用Set保存和显示学生集合任务7 使用Map保存和显示学生集合3.1 API的概念的概念 Java的类库是系统提供的已实现的标准类的集合,统称为J
17、ava应用程序编程接口,即Java API(Application Program Interface)3.2 字符串处理字符串处理任务任务1 字符串加密与解密字符串加密与解密编程实现将用户输入的字符串按照一定规则进行加密,同时也实现能将加密后的字符串解密的功能,运行效果如图所示。知识点:知识点:String、StringBuffer一、一、String字符串是程序设计中经常使用到的数据结构,它是字符的序列。两大类:1、创建之后不会再做修改和变动的字符串常量类型String2、创建之后允许再做更改和变化的字符串变量类型StringBuffer String类的常用构造方法,见教材表3-2 St
18、ring类的常用方法,见教材表3-3 String的常见应用,见教材例程3-1至3-6二、二、StringBufferStringBuffer表示可扩充、可修改的字符序列,是可变长的字符串。StringBuffer可有插入其中或追加其后的字符或子字符串,StringBuffer可以针对这些添加自动地增加空间,并增加更多的预留字符。StringBuffer类的常用构造方法,见教材表3-4 StringBuffer的常见应用,见教材例程3-7、3-8任务任务2 统计单词及其数量统计单词及其数量编程实现一个统计单词及其数量的程序,分析给定的字符串,将其中的单词分离出来,并统计单词的数量,运行效果如图
19、所示。知识点:知识点:StringTokenizer类类分析字符串并将字符串分解成可被独立使用的单词,可以使用java.util包中的StringTokenizer类。使用StringTokenizer时,指定一个输入字符串和一个包含了分隔符的字符串。分隔符是分隔标记的字符,如空格符、换行符、回车符、Tab符等等。StringTokenizer的构造方法,见教材表3-5 StringTokenizer的常用方法,见教材表3-63.3 数学运算工具数学运算工具Math任务任务3 常见数学运算常见数学运算编程实现常见的数学运算,效果如图所示。知识点:知识点:Math类类 Math类用来完成一些常用
20、的数学运算,它提供了若干实现不同标准数学函数的方法。Math中的常用方法,见教材表3-73.4 日期时间处理日期时间处理任务任务4 格式化格式化日期日期编程实现将日期按照格式“xxxx年xx月xx日”输出,效果如图所示。知识点知识点:Date、DateFormat、Calendar一、一、Datejava.util.Date包装了一个long类型数据,表示与GMT(格林尼治标准时间)的1970年1月1日00:00:00这一时刻所相距的毫秒数。二、二、DateFormat和和SimpleDateFormat java.text.DateFormat 抽象类可以用于定制日期的格式 SimpleDa
21、teFormat是DateFormat的子类,它允许用户更具体地定制日期时间的格式三、三、Calendar和和GregorianCalendar Calendar,提供了一组方法允许将以毫秒为单位的时间转换为一组有意义的分量 GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统3.5 集合类集合类一、集合类概述一、集合类概述 集合是一种数据结构,可以包含其他对象的引用,相当于装载其它对象的容器。Java集合API分为两大类,以Collection为接口的元素集合类型,以Map为接口的映射集合类型。Java的集合框架二、二、Co
22、llection和和Iterator Collection接口提供了一个iterator()方法,用于获取集合中所有元素的迭代器,可以用此对象依次访问集合中的元素。使用Iterator遍历集合(如下代码中的coll)中元素的代码模板如下:Iterator iter=coll.iterator();while(iter.hasNext()Object obj=iter.next();/对obj的其它操作任务任务5 保存和显示学生列表保存和显示学生列表编程实现用集合存一个学生列表,并将各学生的信息显示出来,效果如图所示。知识点:知识点:List接口及实现类接口及实现类 List接口是一种能包含重复
23、元素的有序集合,与数组一样,List的首元素的索引也是0。List集合的特征:元素有序排列;可以有重复元素;可以随机访问,使用元素索引添加、删除、访问元素等。任务任务6 使用使用Set保存和显示学生集合保存和显示学生集合编程实现用Set集合存一个学生列表,并将各学生的信息显示出来,效果如图所示。知识点:知识点:Set接口及实现类接口及实现类 Set接口是一种无重复元素的集合。集合API中包含多种Set实现类,主要为HashSet、TreeSet、SortedSet及LinkedHashSet。任务任务7 使用使用Map保存和显示学生集合保存和显示学生集合编程实现用Set集合存一个学生列表,并将
24、各学生的信息显示出来,效果如图所示。知识点:知识点:Map接口及实现类接口及实现类 Map映射类储存的数据是“键/值”对,将“键”与“值”关联起来,给出键key就可以查找到与之相关的值value Map接口是映射类的顶层接口,SortedMap接口提供了排序功能,最经常使用到的已实现Map接口的类有HashMap和TreeMap。3.6 泛型 泛型是在J2SE 1.5中引入的新特性 泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数,此参数类型可以用在类、接口和方法的声明及创建中,分别被称为泛型类、泛型接口及泛型方法使用泛型的优点 编译器在编译时进行严格地类型安全检查,最大可能地消除了
25、强制类型转换可能引起系统安全隐患 所有的强制类型转换都是自动和隐式进行,提高了代码的重用率实训任务实训任务实训 3-1 编程判断一个字符串是否是回文。实训 3-2 将“2013-10-24”格式的日期字符串转换成“2013年10月24日”。实训 3-3 接受用户输入的若干字符串,并按字典序排序后输出。实训 3-4 计算某年、某月、某日和某年、某月、某日之间的天数间隔。实训任务实训任务实训 3-5 接受用户输入的一个字符串和一个字符,把字符串中所有指定的字符删除后输出。实训 3-6 使用集合类,存储班级内所有学生的基本信息,并打印所有同学的姓名。实训3-7 使用映射类,存储班级内所有学生的基本信
26、息,存储时根据学号进行排序,并打印出所有同学的学号及姓名、性别。Java高级程序设计高级程序设计第第4章章 GUI程序设计程序设计第第4章章 GUI程序设计程序设计4.1认识认识GUI程序程序4.2容器与布局容器与布局4.3GUI基本元素基本元素4.4菜单与工具栏菜单与工具栏4.5对话框对话框4.6表格表格本章目标 创建图形用户界面 实现界面与用户的交互 使用Swing常用组件本章任务本章任务任务1 登陆窗体任务2 登陆验证功能任务3 图形用户界面的四则运算任务4 文本复制任务5 字体选择器任务6 简单记事本界面任务7 确认退出对话框任务8 使用表格4.1 认识认识GUI程序程序任务任务1 登
27、陆窗体登陆窗体编程实现一个登陆窗体,这在信息管理系统中是及其常见的。效果如图所示。知识点:知识点:Swing包、创建窗体包、创建窗体一、一、Swing包包GUI,即图形用户界面(Graphics User Interface),它是用户与应用程序之间的一个交互接口。Java中,为了方便GUI程序的开发,设计了专门的类库来生成各种标准图形界面元素,Swing组件便是其中常用的一种,类库是javax.swing包。Swing相关的包,见教材表4-1 常用Swing组件类层次图,见教材图4-2二、创建二、创建窗体窗体1、窗体JFrame JFrame 类就是一个顶层容器类,允许用户把其他组件添加到它
28、里面,把它们组织起来,并把它们呈现给用户。JFrame的常用方法,见教材表4-22、标签JLabel JLabel类是一个用来在界面上显示文本或图像的类,创建标签时即可指定要显示的文本或图像,但运行时它们不能被用户修改。标签不能响应输入事件,不能与用户交互,即不能像按钮那样点击后程序可以做出某种响应,标签主要用来显示。3、按钮JButton按钮JButton类是图形界面中使用最多的一个组件,使用按钮可以与用户交互,响应鼠标的点击,可以完成用户想要完成的一些功能。JButton是继承自抽象类AbstractButton的,该抽象类中定义了许多组件的设置和处理的方法,AbstractButton类
29、的常用方法见教材表4-34、文本框JTextField和密码框JPasswordFieldSwing中与文字输入有关的组件主要包括JTextField、JTextArea、JPasswordField和JTextPane,其中JTextField、JPasswordField是单行的文本输入组件,JTextArea是多行的文本输入组件,JTextPane可以设置其中文本的格式,它们都继承自JTextComponent类JTextComponent类的常用方法,见教材表4-4任务任务2 登陆验证功能登陆验证功能完善任务1,令登陆窗体可以响应用户的登陆请求,在用户输入账号、密码,并点击“登陆”按钮
30、后进行身份验证,并反馈登陆成功与否的信息。运行效果如图所示。知识点:事件处理机制知识点:事件处理机制 当GUI上的组件与用户发生交互,触发一定的事件后执行相应的事件处理代码,使得GUI能“动”起来的这种机制就叫做事件处理机制。Java采用叫做授权事件模型授权事件模型(Delegation Event Mode)的事件处理机制,也称为委托事件模型。采用授权事件模型进行事件处理一般包含三步骤三步骤:第一、确定事件源Event Source和事件Event。第二、实现可以监听和处理事件的监听器Event Listener,编写事件的处理代码。第三、将监听器对象注册给事件源,这样关联之后才能使得事件发
31、生后能执行相应的处理代码。Java图形用户界面事件处理的过程 例程:典型的按钮点击事件使用文本框收集用户输入的学生信息,点击“确定”按钮后将学生信息回显到界面右侧空白区域,点击“重置”按钮将同时清空文本框填入的信息和右侧的回显信息。运行效果如图所示。4.2 容器与布局容器与布局任务任务3 图形用户界面的图形用户界面的四则运算四则运算编程实现图形用户界面的四则运算程序,加法、乘法运算的运行效果分别如图所示。知识点:知识点:JPanel、布局管理器、布局管理器 一、一、JPanelJPanel,Swing中的中间层容器面板,继承自javax.swing.JComponent,主要用于放置Swing
32、轻量级组件,JPanel的对象也可以作为顶层容器的内容面板来使用。将JPanel与布局策略结合使用可以更有效地进行界面设计和管理。二、布局管理器二、布局管理器1、FlowLayoutFlowLayout 是JPanel的缺省布局管理器,其布局策略是:组件按从上到下、从左到右的顺序进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边,依此类推。2、BorderLayoutBorderLayout边界布局是一种比较简单的布局策略,它将容器分为NORTH、SOUTH、WEST、EAST、CENTER
33、五个区域,每个区域容纳一个组件,这五个区域被定义为BorderLayout类的5个静态常量。3、GridLayoutGridLayout网格布局是像棋盘一样将容器划分成若干行列的网格区域,每个网格放置一个组件。在容器上添加组件时,它们会按从左到右、从上到下的顺序在网格中排列。4、BoxLayoutBoxLayout箱式布局是在Swing中新增加的一种布局管理器,它允许多个组件全部垂直摆放或全部水平摆放。BoxLayout布局管理器按照自上而下(y轴)或者从左到右(x轴)的顺序布局依次加入组件。5、null布局若想精确地指定各个组件的位置和大小,我们可以使用容器的setLayout()方法,将参
34、数设为null,表示取消容器的布局管理器设置,即null布局。若采用了null布局,就需要我们为各个组件设置位置和大小,应配合组件的setBounds()方法,或setLocation()方法、setSize()方法使用。4.3 GUI基本元素基本元素任务任务4 文本复制文本复制编程实现一个文本复制程序,用户可以在左侧文本区中键入内容,选中文本后,点击copy按钮可将选中的文本复制到右边的文本区中,运行效果如图所示。任务任务5 字体选择器字体选择器编程实现一个字体选择器,用户可以选择字体、字号、样式和颜色,用户键入文本内容时,文本区回显用户键入的内容,并采用用户选择的字体、字号、样式和颜色。运
35、行效果如图所示。知识点:选择型组件知识点:选择型组件一、单选按钮一、单选按钮JRadioButton JRadioButton单选按钮必须配置成组才能实现多选一,否则仍然能够多选。性别选择就应使用JRadioButton单选按钮组实现。二、复选框二、复选框JCheckBox JCheckBox,复选框,实现一组选项中的多选功能 例程:模拟考试系统的答题界面三、组合框三、组合框JComboBox Swing通过JComboBox类支持组合框(一个文本框和下拉列表的组合),组合框通常显示一个可选条目,可允许用户在一个下拉列表中选择多个不同条目4.4 菜单与工具栏菜单与工具栏任务任务6 简单记事本界
36、面简单记事本界面编程模拟一个简单记事本界面,包含文件的新建、打开操作命令和文本的剪切、复制、粘贴命令,以及退出程序的操作命令,并实现编辑功能(剪切、复制、粘贴)和退出功能。效果如图所示。知识点:菜单、工具栏知识点:菜单、工具栏一、菜单一、菜单菜单和工具栏几乎是所有图形用户界面程序中必备的组件,Swing包中有一系列专门用来创建菜单组件的类,如图所示。1、JMenuBar菜单栏JMenuBar是放置菜单的容器。可以通过JFrame类的setMenuBar()方法把JMenuBar对象加入一个框架中。2、JMenu菜单JMenu是菜单栏上放置的菜单。每一个菜单由一些菜单项组成。可以通过JMenuB
37、ar类的add()方法,把JMenu对象放置在JMenuBar对象上(即设置菜单栏上的主菜单)。3、JMenuItem菜单项 菜单项代表具体的菜单操作命令,可以通过JMenu类的add()方法,把JMenuItem菜单项加到JMenu菜单中。JMenuItem与JButton及其相似,点击JMenuItem同样产生ActionEvent事件。4、JPopupMenu弹出菜单 JPopupMenu可实现弹出菜单,弹出菜单是一个可弹出并显示一系列选项的小窗口。JPopupMenu 用于用户在菜单栏上选择项时显示的菜单。它还用于当用户选择菜单项并激活它时显示的“右拉式(pull-right)”菜单。
38、5、JSeparator分隔符JSeparator 常用作菜单项之间的分隔符,以便将菜单项分成几个逻辑组。可以使用 JMenu 或JPopupMenu 的 addSeparator()方法来创建和添加一个分隔符,而不是直接使用 JSeparator。JSeparator 还可能用于 GUI 中任何一个需要可视化分隔符的地方。6、创建菜单系统案例例程:模拟一个学生管理系统的菜单系统二、二、工具栏工具栏 Swing中JToolBar类提供了工具栏的属性和方法,用来放置各种常用功能命令的按钮。对于大多数的外观,用户可以将工具栏拖到单独的窗口中(除非 floatable 属性被设置为 false)。4
39、.5 对话框对话框任务任务7 确认退出确认退出对话框对话框在任务6的基础上,创建确认退出的对话框,当用户选择退出菜单或点击退出按钮时,弹出该对话框请用户确认退出操作。运行效果如图所示。知识点:知识点:JDialog、JOptionPane、JFileChooser一、一、JDialogJDialog,Swing中的对话框,依赖于上层组件(窗口或对话框),一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。JDialog必须要依赖于某个窗口或组件,当它所依赖的窗口或组件消失,对话框也将消失,当它所依赖的窗口或组件可见时,对话框又会自动恢复。二、二、JOptionPane JOptionPa
40、ne类提供了一些静态方法用于显示各种对话框,这些对话框都是模式的,主要包含四种类型:消息对话框、输入对话框、确认对话框和选项对话框。JOptionPane类创建各种标准对话框的静态方法,见教材表4-6三、三、JFileChooser JFileChooser,文件选择器,用于显示打开或保存文件的对话框。JFileChoose本身只是一个针对文件操作的对话框,并没有文件读取或文件存盘的功能,要实现这样的功能,必须要结合输入输出流的使用。4.6 表格表格任务任务8 使用表格使用表格编程实现一个简单学生成绩管理程序,可以录入和显示学生姓名、班级和成绩信息。运行效果如图所示。知识点:知识点:JTabl
41、e 表格是在设计图形用户界面时非常重要的一种组件,特别是当我们需要将较多的统计数据非常清晰而有条理地呈现在用户面前时,表格的运用可以达到很好的效果 Swing实现表格的组件是JTable实训任务实训任务实训 4-1 编写简易计算器界面,并实现其计算功能。实训 4-2 自行设计一个输入学生基本信息的窗口,要包含能输入学生基本信息的各种组件,具有选择性质的要使用相应的选择型组件,还要求包含两个按钮(确定和重置)和一个不可编辑的文本区。功能要求:点击确定后能在文本区中显示出学生输入的信息,点击重置能撤销之前的输入。实训任务实训任务实训 4-3 参考下图所示界面,实现一个猜数字游戏程序。实训任务实训任
42、务实训 4-4 实现如图所示的生肖显示器,当选择出生年份时,可显示对应的生肖图片。Java高级程序设计高级程序设计第第5章章 IO输入输出流输入输出流第第5章章 IO输入输出流输入输出流5.1 IO流的概念流的概念5.2 文件读写文件读写5.3 使用过滤流使用过滤流5.4 使用使用RandomAccessFile本章目标 IO流的概念、分类 使用文件流读写文件 使用过滤流本章任务本章任务 任务1 使用预定义流 任务2 文件类型过滤器 任务3 文件复制 任务4 记事本打开、另存为功能 任务5 学生信息存至磁盘文件5.1 IO流的概念流的概念任务任务1 使用预定义流使用预定义流编程实现:接收用户输
43、入一段字符,并在控制台回显出来。运行效果如图所示。知识点:流的概念和分类、预定义知识点:流的概念和分类、预定义流流一、流的概念和一、流的概念和分类分类Java程序通过流来执行输入输出处理流的模型如图所示:以程序为基准点,根据流中的数据传输的方向,流可以分为:输入流:由外部源向程序提供数据 输出流:由程序向外部目的地提供数据 根据“导管”里流动的数据的类型,流可以分为:字节流:以字节为传输单位 字符流:以字符为传输单位 根据流的建立方式和工作原理,流可以分为:节点流:直接建立在源端、目的端上 过滤流:必须以某个节点流作为流的来源,可以在读/写数据的同时对数据进行处理 字节流的类层次结构如图所示
44、字符流的类层次结构如图所示二、预定义流二、预定义流java.lang.System类中包含三个预定义静态常量,分别是in、out和err,可以通过System类直接调用它们,它们就是Java语言提供的预定义流。5.2 文件读写文件读写任务任务2 文件类型文件类型过滤器过滤器编程实现一个文件类型过滤器,列出指定目录下的所有.java源文件,假定目录为e:java。运行效果如图所示。知识点:知识点:File类类 文件(file)是存储在辅助存储器中的一组相关信息的集合,它可以存放程序、文档、图片、声音或视频信息等。目录(directory)是一种特殊的文件,用以存放普通文件或其它的目录。路径(pa
45、th)是从盘符经过各级子目录到文件的目录序列。java.io包中定义了一个File类来专门处理文件,并获取文件的有关信息。Java语言中通过File类来建立与磁盘文件的联系,File类主要用来获取文件或目录的信息,File类的对象本身不提供对文件的处理功能。任务任务3 文件复制文件复制编程实现一个文件复制功能,将一个java源文件复制到一个指定的txt文件,假定就复制本程序的源文件FileCopy.java,复制到e:/java目录中。运行效果如图所示。知识点:文件字节知识点:文件字节IO流流 FileInputStream是InputStream类的子类,它的常用构造方法如下:FileInp
46、utStream(String name):使用指定的文件名name创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。FileInputStream(File file):使用指定的文件对象来创建一个FileInputStream的对象,如果文件不存在会产生FileNotFoundException。FileOutputStream是OutputSream类的子类,它的常用构造方法如下:FileOutputStream(String name):使用指定的文件名创建一个FileOutputStream的对象。FileOutputStr
47、eam(File file):使用指定的文件对象来创建一个FileOutputStream的对象。任务任务4 记事本打开、另存为功能记事本打开、另存为功能在第4章任务6实现的简单记事本程序基础上,添加“另存为”菜单项,并实现“打开”、“另存为”文件功能。运行效果如图所示。知识点:文件字符知识点:文件字符IO流流 FileReader类是Reader类的子类,它可以按字符对文件进行读取。它的常用构造方法如下:FileReader(String name):使用指定的文件名name创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileReade
48、r(File file):使用指定的文件对象来创建一个FileReader的对象,如果文件不存在会产生FileNotFoundException。FileWriter类是Writer类的子类,它可以按字符对文件进行写入。它的常用构造方法如下:FileWriter(String name):使用指定的文件名name创建一个FileWriter的对象。FileWriter(File file):使用指定的文件对象file创建一个FileWriter的对象。5.3 使用过滤流使用过滤流任务任务5 学生信息存至磁盘文件学生信息存至磁盘文件编程实现:控制台接收输入学生的基本信息,再将这些信息存至磁盘文件
49、。运行效果如图所示。知识点:节点流和过滤流、常用过知识点:节点流和过滤流、常用过滤滤流流一、节点流和过滤一、节点流和过滤流流根据流的建立方式和工作原理不同,可以将流分为:节点流(Node Streams):直接建立在源端、目的端上。过滤流(Filter Streams):过滤流必须以某一个节点流作为流的来源,可以在读/写数据的同时对数据进行处理。过滤流建立在节点之上体现在过滤流的构造方法中,比如:FileInputStream in=new FileInputStream(file);DataInputStream datain=new DataInputStream (in);实现了基于文件
50、输入流in的过滤流datain,它将可以实现分数据类型读文件file。二、常用过滤流二、常用过滤流1、DataInputStream和DataOutputStreamDataInputStream和DataOutputStream类提供了对Java基本数据类型和String的操作。在DataInputStream和DataOutputStream两个类中的方法都很简单,基本结构为readXxx()和writeXxx()其中Xxx代表基本数据类型或者String。2、ObjectInputStream和ObjectOutputStream、对象序列化ObjectInputStream和Objec