Java面向对象程序案例教程课件汇总全书电子教案完整版课件(最新)_第1页
Java面向对象程序案例教程课件汇总全书电子教案完整版课件(最新)_第2页
Java面向对象程序案例教程课件汇总全书电子教案完整版课件(最新)_第3页
Java面向对象程序案例教程课件汇总全书电子教案完整版课件(最新)_第4页
Java面向对象程序案例教程课件汇总全书电子教案完整版课件(最新)_第5页
已阅读5页,还剩229页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 Java概述Java是广泛应用的面向对象编程语言1.1 Java语言的特点1. 跨平台性Java源程序计算机系统1Java虚拟机字节码文件编译计算机系统2Java虚拟机1.1 Java语言的特点2. 面向对象抽象与封装、继承、动态3. 安全性4. 多线程5. 简单易用1.2 Java的版本1996年1月,第一个JDK-JDK1.0诞生;1997年2月18日,JDK1.1发布;1998年12月8日,Java 2企业平台J2EE发布;1999年6月,SUN公司发布Java三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME);2000年5月8日,JDK1.3发布;2000年5

2、月29日,JDK1.4发布;2001年9月24日,J2EE1.3发布;2002年2月26日,J2SE1.4发布,此后Java的计算能力有了大幅提升;1.2 Java的版本2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0;2006年12月,SUN公司发布JRE6.0;2009年12月,SUN公司发布Java EE 6;2011年7月28日,甲骨文发布Java SE 7;2014年3月18日,甲骨文发表Java SE 8;2017年9月21日,甲骨文发表Java SE 9。(2009年4月20日甲骨文

3、收购SUN)1.3 搭建Java开发环境1.3.2 配置环境变量JAVA_HOME:指向的是JDK的安装路径,如C:Program FilesJavajdk1.8.0_131PATH : %JAVA_HOME%bin;CLASSPATH: %JAVA_HOME%libdt.jar环境变量的设置方法:右键点击我的电脑-属性-高级-环境变量,修改系统变量1.4 Eclipse运行第一个Java程序步骤1:创建工程(Project) 事先创建好工作目录(WorkSpace),在启动Eclipse时,将WorkSpace切换到工作目录。 创建java Project步骤2:创建包(可选,不创建包也可以

4、)步骤3:创建类( 假设类名为HelloWorld )步骤4:输入源程序步骤5:运行1.4 Eclipse运行第一个Java程序Java程序的运行方式1:在右键选中类HelloWorld,然后选中Run AsJava Application.2:在菜单中选择“Run - Run”3:点击运行按钮 ,选择 HelloWorld程序运行后,在控制台窗口输出如下内容:Hello 面向对象程序设计4:在命令行窗口编译运行编译Java程序:javac HelloWorld.java运行Java程序:java HelloWorld1.5 HelloWorld程序分析classpublicmain()方法S

5、ystem.out.println()方法提示:“System.out.println()”可以用下面的方式快捷输入:输入syso,然后使用快捷方式ALT+/。第2章 Java语言基础主要内容标识符和关键字代码注释数据类型常量和变量运算符与表达式控制语句方法和方法重载2.1 标识符2.1.1 标识符命名规则标识符,是指程序员在定义java程序时,自定义的一些名字。如类名、变量名、函数名、包名等。标识符的基本字母表为:26个英文字符大小写、数字、下划线和美元符号($)。不能以数字开头。不能是关键字。区分大小写。可以为任意长度。2.1 标识符2.1.2 标识符命名规范包名:小写字母类名:每个单词的

6、第一个字母大写,其他字母小写接口:与类名相同(可在最前加大写字母I)。方法:第一个单词全小写,后面的单词首字母大写,其他小写属性:第一个单词全小写,后面的单词首字母大写,其他小写常量:全使用大写字母,多个单词的用下划线连接2.1 标识符2.1.3 Java语言中的关键字abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnative

7、newpackageprivateprotectedpublicreturnstrictfpshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile2.2 代码注释2.2.1 必须加注释的代码1. 基本必加注释类(接口)构造函数方法全局变量字段/属性2. 特殊必加注释典型算法。代码不明晰处。代码修改处。代码循环和逻辑分支组成的代码处。为他人提供的接口。2.2 代码注释2.2.2 代码注释格式单行注释:“/” 块注释:“/*.*/”文档注释:/*.*/,这种格式是为了便于javadoc程序自动生成

8、帮助文档。在这种注释内部可以使用各种Javadoc标记(见下页)注:这部分内容可以在讲完继承与多态再练习2.2 代码注释Javadoc标记解释version对类的说明 标明该类模块的版本。since指定最早出现在哪个版本。author对类的说明 标明开发该类模块的作者。see对类、属性、方法的说明。生成参考其他的JavaDoc文档的连接,也就是相关主题。link生成参考其他的JavaDoc文档,它和see标记的区别在于,link标记能够嵌入到注释语句中,为注释语句中的特殊词汇生成连接。eg.linkHellodeprecated用来注明被注释的类、变量或方法已经不提倡使用,在将来的版本中有可能

9、被废弃param描述方法的参数,是对方法的说明,对方法中某参数的说明。return描述方法的返回值,是对方法返回值的说明throws描述方法抛出的异常,指明抛出异常的条件exception对方法的说明 对方法可能抛出的异常进行说明2.3 基本数据类型2.3.1 8种基本数据类型类型位数数据范围默认值1boolean1位true和false两个值false2byte8位最大存储数据量是255,数据范围是-12812703char16位存储Unicode码,用单引号赋值。4short16位最大数据存储量是65536,数据范围是-327683276705int32位最大数据存储容量是232-1,数据

10、范围是-231231-106long64位最大数据存储容量是264-1,数据范围为-263263-10L7float32位数据范围在3.4e-451.4e38,赋值时须在数字后加上f或F0.0f8double64位据范围在4.9e-3241.8e308,赋值时可以加d或D也可以不加0.0d2.3 基本数据类型2.3.1 8种基本数据类型注意:前面表中的默认值指类中的属性,而在方法中定义的变量,如果不赋值就使用会产生错误。boolean类型只需要一位就可以,但内存是以字节为单位的,程序中定义一个boolean变量需占用一个字节。Java为每个基本数据类型都提供一个包装类,利用该类可以获取各基本类

11、型的有关信息。例2.1 获取基本数据类型的取值范围2.3 基本数据类型注意:整数的八进制、十六进制表示前缀0表示八进制,前缀0X表示十六进制。如:int decimal = 100;int octal = 0144; / 十进制100int hexa = 0 x64; / 十进制1002.3 基本数据类型2.3.2 Java中的常量常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。例如:final double PI = 3.14;final char MALE=M,FEMALE=F;适当使用常量,可提高程序的可读性,有利于程序的维护。2.3 基本数据类型2.3.3

12、转义字符有些字符具有特殊功能,如双引号用于字符串的开始和结束,单引号用于将字符括起来。 如果字符串本身就包括双引号,如”He said “Hello” ”。如果直接写:String str = ”He said “Hello” ”;就会产生语法错误,因为 ”He said “ 已经是一个完整的字符串,后面再接Hello” ”,显然不符合要求 。为此Java使用转义字符将双引号转换成普通字符。用“”表示转义字符,即“”后面的字符被转义。2.3 基本数据类型2.3.3 转义字符符号字符含义a响铃(BEL)n换行(LF) ,将当前位置移到下一行开头r回车(CR) ,将当前位置移到本行开头f换页符(F

13、F),将当前位置移到下页开头b退格 (BS),将当前位置移到前一列0空字符 (0 x20)s字符串t水平制表(HT) (跳到下一个TAB位置)v垂直制表(VT)双引号单引号反斜杠ddd1到3位八进制数所代表的任意字符xhh1到2位十六进制所代表的任意字符uxxxx16进制Unicode字符 (xxxx)2.3 基本数据类型2.3.3 转义字符例如:String s1 = “He said “Hello” ”;“”作为转义字符的标志,那如何输出“”本身。例如:String s2 = “C:JavasrcHelloWord.java”;2.3 基本数据类型例2.3 转义字符的应用在这个例子中用到了

14、String类的split()方法。split() 方法用于把一个字符串分割成子字符串数组。参数是一个正则表达式,用于指定分隔符。如String s = “aaa:bbb:ccc”;String words = s.split(“:”);但如果用特殊的字符(如、|、+、*等在正则表达式中有特殊意义的字符)作为分隔符,就要使用转义自费了。2.3 基本数据类型如:String s = aaa|bbb|ccc;String words = s.split(|);String s = aaa+bbb+ccc;String words = s.split(+);String s = aaabbbccc;

15、String words = s.split(+);2.4 运算符2.4.1 算术运算符+、-、*与数学中的用法一致。操作符说明+加法 - 相加运算符两侧的值-减法 - 左操作数减去右操作数*乘法 - 相乘操作符两侧的值/除法 - 左操作数除以右操作数求余或取模 - 左操作数除以右操作数的余数+自增: 操作数的值增加1-自减: 操作数的值减少12.4 运算符2.4.1 算术运算符除法(/):两个整数相除,结果为整数,小数部分被舍去。两个实数相除结果为实数。例如5/3 = 1 5.0/3.0 = 1.6666666666666667求余数(%):不仅可以求两个整数相除的余数,还可以求两个实数相除

16、的余数。例如:5.7%1.5 = 1.22.4 运算符2.4.1 算术运算符+、-有前置和后置两种使用方式。运算符前置,先使变量值增减,再使用该变量,运算符后置,先使用该变量,再将变量值增减。例如;i=10;j = i+; / 结果i=11, j=10i=10;k = +i; / 结果i=11, j=11例2.4 算数运算符的使用2.4 运算符2.4.2 关系运算符运算符描述=检查如果两个操作数的值是否相等,如果相等则条件为真。!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。检查左操作数的值是否大于右操作数的值,如果是那么条件为真。=检查左操作数的值是否大于或等于右操作数的值,如果

17、是那么条件为真。j) &(i+ k+); System.out.println(i + , +j+ , + k);/10,20,30 int i=10, j=20,k=30; boolean b = (ij) &(i+ k+); System.out.println(i + , +j+ , + k);/11,20,31例2.6 逻辑运算符的短路运算与非短路运算2.4 运算符2.4.4 位运算符操作符描述如果相对应位都是1,则结果为1,否则为0|如果相对应位都是0,则结果为0,否则为1如果相对应位值相同,则结果为0,否则为1按位补运算符翻转操作数的每一位,即0变成1,1变成0。按位右移运算符。左

18、操作数按位右移右操作数指定的位数。无符号按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。注意:无符号的意思是将符号位当作数字位看待。2.4 运算符2.4.4 位运算符例:19&6 00010011 00000110000000102例:19| 6 00010011 000001100001011123例:19 2 00010011 00000100114例:19 6 00010011 000001100001010121例:19 000000 00010011 111111 11101100:总是补0 :有的系统补0,有些系统补1例 2.7 位运算符的使用2.

19、4 运算符2.4.5 赋值运算符操作符用法等价于=s=is=i+=s+=is=s+i-=s-=is=s-i*=s*=is=s*i/=s/=is=s/ i=s=is=s%i=s=is=s=s=is=si=s=is=si=s&=is=s&i=s=is=si|=s|=is=s|i注意:a *= 3+6; 相当于a = a * (3+6);例2.8 赋值运算的应用2.4 运算符2.4.6 条件运算符由?和:组成,是一个三元运算符,使用格式为: ? : 例如:max = ab ? a : b;例2.9 条件运算符的使用2.4 运算符2.4.7 字符串加运算符(+)将两个字符串连接起来例2.10 字符串连

20、接2.5 控制语句选择结构语句:if语句、swtch语句循环结构语句:for语句、while语句、dowhile语句continue语句break语句return语句2.5 控制语句if语句三种使用形式 if(表达式)方法体 if(表达式)方法体 else 方法体if(表达式1) 方法体1 else if(表达式2) 方法体 else if(表达式n) 方法体n else 方法体n+12.5.1 选择结构2.5 控制语句if语句例:if(s60)System.out.println(“需要补考”); if(time=90)System.out.println(“优”); else if(s =

21、80) /没必要写else if(s =80)&(s=70)System.out.println(“中”); else if(s =60)System.out.println(“及格”); elseSystem.out.println(“不及格”);2.5.1 选择结构例2.11 if语句的应用2.5 控制语句switch(表达式) case 常量1: 语句1 break; /可选 case常量2: 语句2 break; /可选 case常量n: 语句n break; /可选 default : /可选 语句n+1 2.5.1 选择结构2. switch语句使用格式多分支语句,表达式的值与哪个

22、Case后面的常量相同就从哪里开始执行,如果没有与表达式相同的常量值,则从default后面开始执行,遇到break结束switch语句。表达式:整型或字符型各常量的值互不相同default可以没有2.5 控制语句2.5.1 选择结构2. switch语句例2.12 switch语句的使用。删除程序中的所有break语句,观察运行程序后有什么不同。 int a = score/10; switch(a)为什么不直接使用 switch(score)2.5 控制语句2.5.2 循环结构1. for语句使用格式: for(表达式1; 表达式2; 表达式3) 语句执行过程:首先求解表达式1然后求解表达

23、式2如果表达式2为真,则执行语句执行完语句后,在求解表达式3,再求解表达式2,为真再执行语句,否则结束循环表达式1:通常是为循环变量初始化表达式2:循环条件,结果为真执行循环语句,为假结束循环表达式3:通常是改变循环变量的值,使循环趋于结束2.5 控制语句2.5.2 循环结构1. for语句例:求1+2+3+100int sum=0;int i;for(i=1; i=100; i+) sum += i;System.out.println(sum);例2.13 使用for循环输出水仙花数水仙花数是一个三位数,他的各位数的立方和与这个数本身相等注意:如何求一个整数的每一位数。2.5 控制语句2.

24、5.2 循环结构2. while语句使用格式: while(表达式) 语句执行过程:首先求解表达式如果表达式为真,则执行语句,否则结束循环执行完语句后,再判断表达式的真假,来决定循环是否结束2.5 控制语句2.5.2 循环结构2. while语句例:求1+2+3+100int sum=0;int i=1;while( i=100) sum += i; i+;System.out.println(sum);例2.14 使用while实现循环2.5 控制语句2.5.2 循环结构3. dowhile语句使用格式: do 语句 while(表达式);执行过程:首先执行语句再求解表达式如果表达式为真,则

25、再次执行语句,否则结束循环2.5 控制语句2.5.2 循环结构3. dowhile语句例:求1+2+3+100int sum=0;int i=1;do sum += i; i+;while( i=100);System.out.println(sum);例2.15 使用dowhile实现循环例2.16 编写程序,实现一个简单的计时器2.5 控制语句2.5.3 其他语句1. breakBreak可以用在switch语句中或循环语句中。其作用是结束switch语句或循环语句。2. continuecontinue这能用于循环语句中。其作用是结束本次循环,试图进入下次循环。3. returnretu

26、rn用于从方法返回。2.5 控制语句2.5.3 其他语句例 求1100不能被3整除的整数之和(continue)int i;int sum=0; for(i=1; i=100; i+) if(i%3=0) continue; sum += i;System.out.println(sum);2.5 控制语句2.5.3 其他语句例 判断某个整数是否为素数(break)int i,n=11;for(i=2; iy) m=x; else m=y; return m;调用:int a = max(20,30);实参传递给形参返回值形参实参2.6 方法与方法重载2.6.2 方法的调用有返回值方法的调用

27、像刚才的例子。 再看例2.17 有返回值的方法调用 有返回值方法的调用,可将返回值赋给一个变量,也可以直接输出,或者参与各种运算。2.6 方法与方法重载2.6.2 方法的调用2. 无返回值方法的调用 如System.out.println() 中的println()方法就没有返回值,直接调用即可。 例2.18 无返回值的方法调用 2.6 方法与方法重载2.6.3 方法重载可以定义多个相同名字的函数,只要它们参数的个数或类型不完全一致即可,编译程序根据实参与形参的类型及个数自动确定调用哪一个同名函数,这就是函数重载,这些同名函数称为重载函数。2.6 方法与方法重载2.6.3 方法重载如定义两个方

28、法,分别求两个整数及两个实数的最大值。public static int max(int x, int y) if(xy) return x; else return y; public static double max(double x, double y) if(xy) return x; else return y; 2.6 方法与方法重载2.6.3 方法重载例2.19 方法重载第3章 数组3.1 一维数组3.1.1 一维数组的定义与使用定义格式: 数据类型 数组名; 或 : 数据类型 数组名 ; 然后:数组名 = new 数据类型数组元素个数;定义数组时只是说明定义的数组 ,具体有多

29、少个元素以及这些元素保存在什么地方,是通过new实现的。数组元素的个数可以用数组的length属性获知。3.1 一维数组3.1.1 一维数组的定义与使用例如a12345int a; a = new int5; a0 = 1; a1 = 2; a2 = 3; a3 = 4; a4 = 5; 3.1 一维数组3.1.1 一维数组的定义与使用例3.1 遍历数组例3.2 使用属性length来获取数组的长度3.1 一维数组3.1.2 数组的内存分析 栈的特点是变量一旦超出了作用域,该变量就会从内存中消失,同时释放内存空间。 堆内存中存储的都是对象数据,一旦不被引用,就可能被当做垃圾回收3.2 数组常见

30、的异常1. ArrayIndexOutOfBoundsException 索引值(下标)越界例3.3 索引值越界产生的异常2. NullPointerException 空指针异常例3.3 空指针异常注: 在后面的章节会详细介绍异常和异常处理3.3 Arrays的使用Array是Java类库中提供的类,用于对数组的各种操作。第5章 详细介绍Arrays的使用3.4 二维数组二维数组可以看成是每个元素是一维数组的数组,定义如下:数组类型 数组名 = new 数组类型数组行数数组列数;或:数组类型 数组名;数组名 = new 数组类型数组行数;数组名0 = new数组类型第1行列数;数组名1 =

31、new数组类型第2行列数;数组名数组行数-1 = new数组类型最后一行列数;3.4 二维数组例:int a= new int43; /四行三列的二维数组列:int b=new int2; /两行的二维数组 b0= new int3; /第一行3个元素 b1 = new int5; /第二行5个元素二维数组的长度是数组的行数,如上面数组a长度是3,b的长度数2。二维数组每一行的长度可以不同。例3.6 二维数组的长度3.4 二维数组二维数组的初始化:在创建数组的同时为元素赋值,称为数组的初始化,如: int x = new int0,1,2,1,2,3,4;当然也可以先定义数组,然后再给数组元素

32、赋值,如例3.7。3.4 二维数组例 用二维数组存储乘法口诀表。public static void main(String args) int a = new int9; for(int i=0; i9; i+) ai = new inti+1; for(int j=0; j=i; j+) aij=(i+1)*(i+1); for(int i=0; i9; i+) for(int j=0; j 文本)、解析(文本 - 日期)和规范化。 构造方法:public SimpleDateFormat(String pattern)解析:public Date parse(String source)

33、 throws ParseException格式化:public final String format(Date date)标记描述Y表示年,年份是四位数字,所以需要使用yyyy表示年。M表示月,月份是两位数字,所以需要使用“MM”表示月。d表示日,日是两位数字,所以需要使用“dd”表示日。H表示时,两位数字表示m表示分,两位数字“mm”s表示秒,两位数字“ss”S表示毫秒,三位数字“SSS”6.6 SimpleDateFormat例 6.8 SimpleDateFormat类的格式设置6.7 List接口CollectionArrayListSetListLinkedListVector6

34、.7 List接口List接口的主要方法:public E get(int index) 根据索引取得指定的元素内容public E set(int index, E element) 修改指定索引元素的内容Public ListIterator listIterator() 为ListIterator接口实例化6.7.1 ArrayList类 -数组链表例6.9 List的基本使用例6.10输出集合数据例6.11 List接口中contains()、remove()方法的使用6.7 List接口6.7.2 Vector类 -向量 例6.12 Vector类的使用6.7.3 LinkList类

35、-链表例 6.13 ArrayList的添加、删除操作第7章 异常处理7.1 Java异常基本概念ObjectErrorExceptionThrowable可抛出的错误异常检查异常(非运行时异常)非检查异常(运行时异常)ClassNotFoundExceptionExceptionDataFormatExceptionIllegalAccessExceptionInterruptedExceptionIOExceptionRuntimeExceptionArithmeticExceptionSecurityExceptionNullPointerExceptionIllegalArgument

36、ExceptionNumberFormatExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException StringIndexOutOfBoundsException 必须处理可以不处理7.1 Java异常基本概念IOExceptionArithmeticExceptionNullPointerExceptionIndexOutOfBoundsExceptionClassCastExceptionIllegalArgumentExceptionJava的异常处理:使用trycatchfinally结构处理异常,将程序的业务与异

37、常处理分离,逻辑更清晰。7.1 Java异常基本概念例如下面的代码在运行时,就会产生异常:int a = 10;int b = 0;Int c = a/b;System.out.println(c);System.out.println(程序结束);运行时产生异常,输出下列信息,程序结束:Exception in thread main java.lang.ArithmeticException: / by zeroat test.Test.main(Test.java:71)7.1 Java异常基本概念使用异常处理后的代码如下:tryint a = 10;int b = 0;int c =

38、a/b;System.out.println(c);catch(ArithmeticException e)System.out.println(除数为零,产生异常);System.out.println(程序结束);运行结果如下:除数为零,产生异常程序结束将可能产生异常的代码放在try块中,使用catch捕获异常,一旦抛出异常就会在后面的catch中找到一个匹配的异常,进入catch块。7.2 throw和throws关键字7.2.1 throw关键字除了程序运行由于各种原因可产生异常,我们也可以主动使用throw关键字抛出一个异常对象。例如 7.1 抛出异常7.2 throw和throws

39、关键字7.2.2 throws 关键字如果一个方法中会产生异常,二不想在方法中处理这个异常,可在方法声明时使用throws关键字。表示这个方法会产生异常,要求调用他的方法处理。例7.2 throws关键字例7.3主方法中使用throws抛出异常7.3 trycatchfinally捕获异常7.3.1 try - catch语句try语句; /可能产生异常的语句。catch (异常类1 变量名)异常处理1catch (异常类2 变量名) 异常处理2匹配规则(1)参数与产生的异常属于一个类;(2)参数是产生的异常的父类;(3)参数是一个接口时,产生的异常实现了这一接口 。例7.4 try-catc

40、h异常处理结构7.3 trycatchfinally捕获异常7.3.2try-catch-finallytry语句; /可能产生异常的语句。catch (异常类1 变量名)异常处理1catch (异常类2 变量名) 异常处理2finally /执行清除工作的语句. 不管有没有异常,finally中的代码总是要执行的。例7.5 打开一个文件流,读入两个字符串,转化为整数,并求其和。7.3 trycatchfinally捕获异常7.3.3 try,catch, finally,throw,throws联合使用例7.6 try catch 综合运用7.4 自定义异常自定义异常一般可继承Excepti

41、on一般只需要写构造方法例7.7 自定义异常第8章 图形用户界面8.1 AWT组件8.1.1 AWT 组件简介AWT(Abstract Window Toolkit)是抽象窗口工具包,是第一代的Java GUI组件,绘制依赖于底层的操作系统。AWT组件位于java.awt包中8.1 AWT组件例8.1 显示框架窗口例8.2 显示多个框架窗口8.1.2 Frame组件与Panel组件setLocation()setSize()setBackground()setResizable()setVisible()setBounds()8.1 AWT组件例8.3 在框架窗口(Frame)中显示一个面板(

42、Panel)例8.4 在框架窗口(Frame)中显示多个面板。setLayout(null)setBounds()add()8.1.2 Frame组件与Panel组件8.1 AWT组件可以使用布局管理器管理容器中组件的位置。setLayout()设置布局管理器。8.1.3 布局管理器LayoutManageFlowLayoutBorderLayoutGridLayoutGridBagLayoutCardLayout8.1 AWT组件8.1.3 布局管理器FlowLayoutFlowLayout按着组件添加到容器中的顺序从左到右、从上到下依次排列,因此也称为流式布局例8.5使用FlowLayou

43、t在框架窗口(Frame)中显示多个按钮。对齐方式:LEFT(左对齐)RIGHT(右对齐)CENTER(居中对齐)LEADING(与容器方向的开始边对齐)TRAILING(与容器方向的结束边对齐)垂直方向间距水平方向间距8.1 AWT组件8.1.3 布局管理器BorderLayout布局管理器把容器的布局分为东、西、南、北、中五个区域。例8.6 使用BorderLayout在框架窗口(Frame)中显示5个按钮垂直方向间距水平方向间距BorderLayout8.1 AWT组件8.1.3 布局管理器GridLayout以矩形网格形式对容器的组件进行布置,也称为网格布局管理器。例8.7使用Grid

44、Layout在框架窗口(Frame)中显示7个按钮。行数列数垂直方向间距水平方向间距GridLayout8.1 AWT组件8.1.4 事件处理8.1 AWT组件8.1.4 事件处理1. 按钮事件处理ActionEven-getActionCommand() getSource()ActionListener-actionPerformed()Button-addActionListener() setActionCommand()例8.8 在窗口中放置两个按钮,分别单击两个按钮,输出不同的信息。8.1 AWT组件8.1.4 事件处理2. 文本框的事件处理ActionEvenTextEvent-

45、 textValueChanged()TextField-getText() setText() setEchoChar()例8.9 在窗口中放置一个文本框,当文本框的内容改变时,输出一个内容变化的通知,并显示当前文本框的内容。在文本框中输入文字后按回车键,输出文本框的内容,并将文本框的内容清空。8.1 AWT组件8.1.5 适配器1. 窗口事件的处理当监听器的方法较多,而程序只用到个别方法时,可以使用适配器。例8.10 程序运行后,窗口显示,然后点击右上角关闭按钮,将程序关闭。WindowEvent 8.1 AWT组件8.1.5 适配器2. 键盘事件的处理例8.11 编写程序,如果按下字符键

46、时,输出该字符,如果按下非字符键时,输出该键相关的信息。KeyListenerKeyPressed()KeyReleased()KeyTyped()KeyAdapterKeyEventKeyEventgetKeyChar()getKeyCode()8.2 Graphics类Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画椭圆、画圆弧、画多边形等。Graphics是一个抽象类,不可能直接产生实例,Java AWT组件都有Paint()方法,该方法有Graphics参数。但传入的参数不属于Graphics类,而是其某个子类的一个实例(这个子类就是sun.java2d.Sun

47、Graphics2D)。8.2 Graphics类由于Graphics是一个抽象类,因此我们在程序中不能使用new创建一个Graphics对象,而Component类提供了一个paint()方法,该方法的参数就是Graphics对象,可以使用该Graphics对象完成绘图的任务。当组件需要重画时,系统会自动调用paint()方法,因此在paint()方法中画出的图形一直会显示在组件中。例8.12 在窗口中输出简单的图形8.2.1 在paint()方法中绘图8.2 Graphics类如果程序在组件中绘制了新的图形或修改了图形,有时也需要重新绘制组件,如果调用paint()方法,则需为其准备一个G

48、raphics对象作为方法的参数。这时我们可以调用repaint()方法,让repaint()方法准备参数并调用paint()方法。例8.13 在第5章讲过圆类和矩形类,当时还不知道如何将这些图形画出。下面通过在在窗口中通过单击按钮,随机画出圆形或矩形,圆的半径以及矩形的长宽都是随机的,每单击一次画一个图形。8.2.2 repaint()方法8.3 Swing组件界面设计Swing的顶层容器有JFrame和JDialog。1JFrame每个JFrame对象都有一个与之关联的内容面板Container类的对象,只能针对这个对象设置布局及添加组件。例8.14 在窗口中显示一个按钮,单击按钮退出程序

49、,点击窗口右上角的关闭按钮,也退出程序。getContentPane()setContentPane()setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)8.3.1 顶层容器8.3 Swing组件界面设计2JDialogJDialog是对话框类。可以通过构造方法指定对话框的所有者(也就是父窗口)对话框的类型对话框的标题。例8.15 在窗口中添加两个按钮“打开”和“关闭”,单击“打开”按钮,显示一个对话框(该对话框中包含一个标签组件),单击“关闭”按钮隐藏该对话框。8.3.1 顶层容器8.3 Swing组件界面设计中间容器只能放在其他容器中,不能单独存在

50、。JpanelJScrollPaneJTabbedPaneJToolBar JSplitPane例8.16 将窗口分割为左右两个部分,中间的分割线可以被拖动以调整两个窗格的大小,可以使用JSplitPane完成这一任务。(Jpanel,JSplitPane)8.3.2 中间容器8.3 Swing组件界面设计JSplitPanesetOneTouchExpandable(true),分隔条上提供一个小箭头来快速展开或折叠分隔条setContinuousLayout(true),在用户拖动分割线的过程中,子组件将连续地重新显示和布局setOrientation(JSplitPane.HORIZON

51、TAL_SPLIT)将分割线设置为垂直方向,也就是可以在分割线的左右侧各放置一个组件setDividerSize(6)设置分割线的宽的。setDividerLocation(400)设置分割线距左边界的距离8.3.2 中间容器8.3 Swing组件界面设计如JButton(按钮)、JCombobox(组合框)、JList(列表框)、JMenu(菜单)、JSlider(滑杆控件)、JTextField等。例8.17 在对话框中添加一个JCombobox组件和一个JTextField组件,当在组合框中选择某一项时,将选择的结果显示在文本框中。8.3.3 基本组件8.3 Swing组件界面设计Jco

52、mboboxActionEventgetSelectedItem()addItem()8.3.3 基本组件8.3 Swing组件界面设计1. 菜单菜单条(JMenuBar)菜单(JMenu)菜单项(JMenuItem)例8.18 设计右图所示的程序,在窗口中添加菜单系统,通过选择菜单,可将窗口的背景设置为红色、绿色和蓝色。8.3.4 菜单与工具条8.3 Swing组件界面设计菜单ActionEventAdd()JFramesetJMenuBar()Container setBackground()8.3.4 菜单与工具条8.3 Swing组件界面设计2. 工具条JToolBarJbutton为

53、例8.18 加上工具条JFrameadd(toolBar,BorderLayout.NORTH);8.3.4 菜单与工具条第9章 多线程9.1 线程的创建9.1.1 创建线程的方法继承于Thread类,然后创建这个类的对象实现Runnable接口的类,然后创建Thread类的对象9.1 线程的创建9.1.2 继承Thread类创建线程例9.1 以继承Tread类的方式,创建一个线程,实现输出10以内的偶数,在主程序中输出10以内的奇数。run()start()sleep()currentThread()getName()9.1 线程的创建9.1.3 为Thread类提供Runnable对象创建

54、线程例9.2 设计一个实现Runnable接口的类,在该类的run()方法中输出10以内的偶数,用这个类的对象作为创建Tread对象的参数,创建一个线程,在主程序中输出10以内的奇数。9.2 线程的状态与优先级9.2.1 线程的状态9.2 线程的状态与优先级9.2.2 线程的优先级1 MIN_PRIORITY2345 NORM_PRIORITY678910 MAX_PRIORITY public final void setPriority(int newPriority);public final int getPriority();9.3 线程同步9.3.1 问题的提出例9.3 银行的转账

55、可以有多种方式实现,如网银转账、ATM机转账、通过银行柜员转账等。假设银行卡里有1000元,三个人分别通过网银、ATM机和通过银行柜员向其他账户转账,编写程序模仿这一过程。9.3 线程同步9.3.2 线程同步的实现同步代码块同步方例9.4 使用线程同步机制修改转账程序,使其符合银行的需要。9.4 线程间通信对于多线程编程,通常是需要多个线程相互配合完成某项任务,这时就涉及到线程间通信了。Objectwait()notify()notifyAll()9.4 线程间通信例9.5 生产者消费者模型,仍以前面的账户为例,假设父母向账户里存钱,三个孩子从账户取钱,为了控制孩子乱花钱,要求账户里不能超过1

56、0000元,当然也不能出现负债。当要取的钱数大于账户余额时,要停止取钱,一旦取钱成功,则通知父母可以存钱了。如存入的钱加上余额大于10000元,则要停止存钱,一旦存钱成功,则通知孩子可以取钱了。9.5 死锁死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需的资源。例如线程A持有资源1的同步锁,再获得资源2的同步锁就可以完成任务,而线程B持有资源2的同步锁,再获得资源1的同步锁就可以完成任务,线程A和线程B就形成了死锁。9.5 死锁例9.6 编写两个线程,第一个线程首先获取第一个资源,然后等待第二个资源,第二个线程首先获取第二个资源,等待第一个资源。第10章 文件与输入输出流java

57、.io包文件管理字节流字符流10.1 File类与文件管理10.1.1 File类使用例10.1 查找某个文件夹(包括子文件夹)下指定类型的文件。exists()isDirectory()listFiles()getPath()getName()10.1 File类与文件管理10.1.2 File的常用方法createNewFile()mkdir()mkdirs()delete()例10.2 在指定的文件夹中新建一个文件,如果文件夹不存在,则首先创建该文件夹。10.2 字节流字节流是以字节为基本单位处理数据的。10.2 字节流10.2 字节流1. InputStreampublic abstr

58、act int read() throws IOExceptionpublic int read(byte b) throws IOExceptionpublic int read(byte b, int off, int len) throws IOException10.2.1 InputStream和OutputStream例 read( b, 3, 6) 输入流10.2 字节流2. OutputStreampublic abstract void write(int b) throws IOExceptionpublic void write(byte b) throws IOExce

59、ptionpublic void write(byte b, int off, int len) throws IOException10.2.1 InputStream和OutputStream10.2 字节流FileInputStream和FileOutputStream是文件输入输出流public FileInputStream(String name) throws FileNotFoundExceptionpublic FileInputStream(File file) throws FileNotFoundExceptionpublic FileOutputStream(Stri

60、ng name) throws FileNotFoundExceptionpublic FileOutputStream(File file) throws FileNotFoundExceptionpublic FileOutputStream(String name, Boolean append) throws FileNotFoundExceptionpublic FileOutputStream(File file, Boolean append) throws FileNotFoundException10.2.2 FileInputStream和FileOutputStream1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论