java课件第六讲
合集下载
Java课件(第六章)
(1)不使用super而希望引用父类方法会导致无限的递 归,因为子类方法实际上是在调用它自己。 ( 2 )当通过父类引用调用一个方法时, Java 会正确地 选择与那个对象对应的类的覆盖方法。 ( 3 )方法覆盖中,子类在重新定义父类已有的方法时 ,应保持与父类完全相同的方法头声明,即与父类完全 相同的方法名、返回值和参数列表。 ( 4 )子类可以添加字段,也可以添加方法或者覆盖父 类中的方法。然而,继承不能去除父类中的任何字段和 方法。
在子类中使用构造函数
(1)子类构造函数总是先调用(显式的或隐式地) 其父类的构造函数,以创建和初始化子类的父类成 员。 ( 2)构造函数不能继承,它们只属于定义它们的 类。如果把一个对象指定为其父类的引用,那么允 许把这个对象转换回它自己原来的类型,为了向该 对象传送一些在父类中没有的信息,必须这样做。
除遗传关系外,现实世界中 还普遍存在着部分—整体关 系。例如,飞机可由发动机、 机身、机械控制系统、电子 控制系统等构成。聚集关系。
继承性是面向对象程序设计语言的最主要的特点,是其 他语言(如面向过程语言)所没有的。
继承定义
继承性是软件复用的一种形式。新类由已存在 的类生成,通过保留它们的属性和行为,并且根据新 类的要求对性能加以修改,添加新的属性和行为。 如果子类只从一个父类继承,则称为单继承; 如果子类从一个以上父类继承,则称为多继承。注意 Java不支持多重继承,但它支持“接口”概念。接口使 Java获得了多重继承的许多优点,摒弃了相应的缺点。
public class Student1 extends Person { public String school; public void show() { System.out.println(this.school); } }
java课件——第六章
教学公共群:81246901 教学公共邮箱:ldxylmj@
7类与对象
Java中声明接口的语法如下: [public] interface 接口名 [extends 父接口名列表] {
//常量声明 [public] [static] [final] 类型 常量名=值;
//抽象方法声明 [public] [abstract] 返回值 方法名(参数列表) [throw异常列表]; } 定义接口与定义类非常相似,实际上完全可以把接口 理解成为一种特殊的类,接口是由常量和抽象方法 组成的特殊类。
2019/5/20
教学公共群:81246901 教学公共邮箱:ldxylmj@
4类与对象
包的导入
包中的类必须包含它们的包名才能完全有效,为每 个想用的包写一个长的逗点分离的包路径名是枯 燥的。因为这点,Java包含了import语句来引入 特定的类甚至是整个包。一旦被引入,类可以被 直呼其名的引用。在Java源程序文件中,import 语句紧接着package语句(如果package 语句存 在),它存在于任何类定义之前。 import pkg1[.pkg2].(classname|*);
2019/5/20
教学公共群:81246901 教学公共邮箱:ldxylmj@
6类与对象
6.2 接口
接口是用来实现类间多重继承的功能的 需要指出的是,接口定义的仅仅是实现某一特定功
能的一组功能的对外接口和规范,而并没有真正 实现这个功能。真正实现在继承这个接口的各个 类中完成
2019/5/20
例:MyPack.AccountBalance.java
访问保护:private、public和protected,见P158 例 p1 p2
Java基础第6章课件
第七页,编辑于星期三:点 二十二分。
6.1 String类和 StringBuffer类
让IT教学更简单,让IT学习更有效
• 6.1.2 String类的常见操作
3.字符串的替换和去除空格操作
程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用String类 的replace()和trim()方法,进行字符串的替换和去除空格操作
例程6-5中涉及到的方法都是用于判断字符串的,并且返回值均为boolean类型。其中, equals()方法比较重要,该方法将父类Object中equals()方法进行了重写。
第九页,编辑于星期三:点 二十二分。
6.1 String类和 StringBuffer类
让IT教学更简单,让IT学习更有效
例程6-4中,调用了String类的两个方法,其中replace()方法用于将字符串中所有与指定 字符串匹配的子串替换成另一个字符串,trim()方法用于去除字符串中的空格,需要注意 的是,该方法只能去除两端的空格,不能去除中间的空格。假设想去除字符串中间的空 格,那么可以调用String类的replace()方法。
让IT教学更简单,让IT学习更有效
• 6.1.2 String类的常见操作
2.字符串的转换操作
程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将 字符串中的字符进行大小写转换等。
在例程6-3中,使用String类的toCharArray()方法将一个字符串转为一个字 符数组,静态方法valueOf()将一个int类型的整数转为字符串, toUppercase()方法将字符串中的字符都转为大写。其中valueOf()方法有很 多重载的形式,float、double、char等其它根本类型的数据都可以通过该方 法转为String字符串类型。
6.1 String类和 StringBuffer类
让IT教学更简单,让IT学习更有效
• 6.1.2 String类的常见操作
3.字符串的替换和去除空格操作
程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用String类 的replace()和trim()方法,进行字符串的替换和去除空格操作
例程6-5中涉及到的方法都是用于判断字符串的,并且返回值均为boolean类型。其中, equals()方法比较重要,该方法将父类Object中equals()方法进行了重写。
第九页,编辑于星期三:点 二十二分。
6.1 String类和 StringBuffer类
让IT教学更简单,让IT学习更有效
例程6-4中,调用了String类的两个方法,其中replace()方法用于将字符串中所有与指定 字符串匹配的子串替换成另一个字符串,trim()方法用于去除字符串中的空格,需要注意 的是,该方法只能去除两端的空格,不能去除中间的空格。假设想去除字符串中间的空 格,那么可以调用String类的replace()方法。
让IT教学更简单,让IT学习更有效
• 6.1.2 String类的常见操作
2.字符串的转换操作
程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将 字符串中的字符进行大小写转换等。
在例程6-3中,使用String类的toCharArray()方法将一个字符串转为一个字 符数组,静态方法valueOf()将一个int类型的整数转为字符串, toUppercase()方法将字符串中的字符都转为大写。其中valueOf()方法有很 多重载的形式,float、double、char等其它根本类型的数据都可以通过该方 法转为String字符串类型。
java06
An object-oriented design determines which classes and objects are needed, and specifies how they will interact Low level design details include how individual methods will accomplish their tasks
• what to do, not how to do it
Often an initial set of requirements is provided, but they should be critiqued and expanded It is difficult to establish detailed, unambiguous, and complete requirements Careful attention to the requirements can save significant time and expense in the overall project
3
Program Development
The creation of software involves four basic activities:
• establishing the requirements • creating a design • implementing the code • testing the implementation
13
Identifying Classes and Objects
We want to define classes with the proper amount of detail For example, it may be unnecessary to create separate classes for each type of appliance in a house It may be sufficient to define a more general Appliance class with appropriate instance data It all depends on the details of the problem being solved
《Java面向对象编程》课件——第6章 类的多态
}
02 多态转型
多态转型,多态转型有两种,分Fra bibliotek是向上转型和向下转型。
➢ 向上转型 就是指子类对象赋值给父类引用
➢ 向下转型 是指一个已经向上转型的子类对象可以使用强制类型转换的格式,
将父类引用转为子类引用,向下转型的格式如下: 子类类型 变量名 = (子类类型) 父类类型的变量;
➢ 为了防止向下转型的失败,我们可以在向下转型前,进行数据类 型判断,判断父类类型的变量是否是由子类对象向上转型而来, 我们可以通过instanceof关键字来判断某个对象是否属于某种数据 类型,使用格式如下: boolean b = 对象 instanceof 数据类型;
}
class Dog extends Animal{ String color;
}
public class Demo3 { public static void main(String[]
args) { Animal animal=new Dog(); ="小黑";
System.out.println(); }
象 p1.work(); //调用子类方法 Persion p2=new Teacher(); p2.work();
} }
01 多态概述
在多态中,我们知道父类变量调用方法时,会调用子类对象的方法,那么在父类 变量访问成员变量,是访问哪个成员变量呢,接下来通过一个具体的案例来演示,代码 如下:
class Animal{ String name; int age;
《java面向对象课程设计》课程
第6章 类的多态
学 习 内 容
01 多态概述
02
多态转型
01 多态概述
02 多态转型
多态转型,多态转型有两种,分Fra bibliotek是向上转型和向下转型。
➢ 向上转型 就是指子类对象赋值给父类引用
➢ 向下转型 是指一个已经向上转型的子类对象可以使用强制类型转换的格式,
将父类引用转为子类引用,向下转型的格式如下: 子类类型 变量名 = (子类类型) 父类类型的变量;
➢ 为了防止向下转型的失败,我们可以在向下转型前,进行数据类 型判断,判断父类类型的变量是否是由子类对象向上转型而来, 我们可以通过instanceof关键字来判断某个对象是否属于某种数据 类型,使用格式如下: boolean b = 对象 instanceof 数据类型;
}
class Dog extends Animal{ String color;
}
public class Demo3 { public static void main(String[]
args) { Animal animal=new Dog(); ="小黑";
System.out.println(); }
象 p1.work(); //调用子类方法 Persion p2=new Teacher(); p2.work();
} }
01 多态概述
在多态中,我们知道父类变量调用方法时,会调用子类对象的方法,那么在父类 变量访问成员变量,是访问哪个成员变量呢,接下来通过一个具体的案例来演示,代码 如下:
class Animal{ String name; int age;
《java面向对象课程设计》课程
第6章 类的多态
学 习 内 容
01 多态概述
02
多态转型
01 多态概述
java学习第6章PPT教学课件
第6章 Java Applet
5.1 什么是Applet 5.2 Applet方法介绍 5.3 Applet的AWT绘制 5.4 Applet的参数传递 5.5 Applet的多媒体支持 5.6 Java存档文件
1. Applet概念
• Java Applet也称为小应用程序,它是网页内容的 一个组成部分
用getFontMetrics(Font)方法得到一个FontMetrics 对象引用。 • int stringWidth(String str) 返回给定字符串所占宽度 • int getHeight() 获得字体的高度 • int charWidth(char ch) 返回给定字符的宽度
• init( )方法 ---Applet实例的初始化工作 • start( )方法 • paint( )方法 ---调整浏览窗口大小、缩放浏览窗口、
移动窗口或刷新等操作都会导致执行paint()方法 实现Applet重绘 • stop( )方法 • destroy( )方法 • update()方法 • repaint()方法
可选属性
• 除了以上3个基本属性外,Applet中还提供一些可 选属性:
• alt为小应用程序的说明信息,当浏览器不支持
Java时将在Applet所处位置显示该信息。 • Align属性用来控制Applet在页面中的相对对齐方
式。Align值为left表示左对齐,right表示右对齐, middle表示居中对齐。 • HSPACE和VSPACE属性分别用来设定Applet与 周围文本之间的水平和垂直间距(单位为像素)。
• 在HTML中通过以下标记来标识一个Applet. <applet code="myapplet.class" height=200 width=300> </applet>
5.1 什么是Applet 5.2 Applet方法介绍 5.3 Applet的AWT绘制 5.4 Applet的参数传递 5.5 Applet的多媒体支持 5.6 Java存档文件
1. Applet概念
• Java Applet也称为小应用程序,它是网页内容的 一个组成部分
用getFontMetrics(Font)方法得到一个FontMetrics 对象引用。 • int stringWidth(String str) 返回给定字符串所占宽度 • int getHeight() 获得字体的高度 • int charWidth(char ch) 返回给定字符的宽度
• init( )方法 ---Applet实例的初始化工作 • start( )方法 • paint( )方法 ---调整浏览窗口大小、缩放浏览窗口、
移动窗口或刷新等操作都会导致执行paint()方法 实现Applet重绘 • stop( )方法 • destroy( )方法 • update()方法 • repaint()方法
可选属性
• 除了以上3个基本属性外,Applet中还提供一些可 选属性:
• alt为小应用程序的说明信息,当浏览器不支持
Java时将在Applet所处位置显示该信息。 • Align属性用来控制Applet在页面中的相对对齐方
式。Align值为left表示左对齐,right表示右对齐, middle表示居中对齐。 • HSPACE和VSPACE属性分别用来设定Applet与 周围文本之间的水平和垂直间距(单位为像素)。
• 在HTML中通过以下标记来标识一个Applet. <applet code="myapplet.class" height=200 width=300> </applet>
龚正罡Java语言程序设计基础教程(第6章)PPT课件
方法
方法说明
protected Component() public String getName() public void setName(String name) public Component getComponentAt(int
x,int y) public Font getFont() public Color getForeground() public Dimension getSize() public void paint(Graphics g) public void repaint() public void setSize(Dimension d) public void setVisible(boolean b) public void update(Graphics g)
构造一个新组件。 获得组件的名称。 将组件的名称设置为指定的字符串。 确定此组件或其直接子组件之一是否包含(x,y)位置,并且如
果是,则返回包含该位置的组件。 获得组件的字体。 获得组件的前景色。 以 Dimension 对象的形式返回组件的大小。 绘制此组件。 重绘此组件。 调整组件的大小,使其宽度为 d.width,高度为 d.height 根据参数 b 的值显示或隐藏此组件。 更新组件。
ep6_1 fr = new ep6_1("Hello Out There!"); // 构造方法
fr.setSize(200, 200); // 设置Frame的大小,缺省为(0,0)
10
6.3 常用容器
容器java.awt.Container也是一个类,实际上 是Component的子类,因此容器本身也是一个 组件,具有组件的所有性质,但是它的主要功 能是容纳其它组件和容器。一个容器可以容纳 多个组件,并使它们成为一个整体。容器可以 简化图形化界面的设计,以整体结构来布置界 面。所有的容器都可以通过add()方法向容器 中添加组件。
Java基础课程06-第六章 继承和多态
• 生活中,继承的例子随处可见
动物 谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
5
生活中的继承
• 子类具有父类的一般特性(包括属性和行为),以及自身 特殊的特性
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?
汽车 引擎数量 外观颜色 刹车 加速 属性 行为
第21页
多态
Java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进
行类型转换 Animal animal = new Dog(); Dog dog = (Dog)animal; //向下转型,把Animal类型转化为Dog类型 Creature creature = animal; //向上转型,把Animal类型转化为Creature类型 如果把引用变量转换为子类类型,称为向下转型, 如果把引用变量转换为父类类型,称为向上转型。 在进行引用变量的类型转换时,会受到各种限制。而且 在通过引用变量访问它所引用的实例的静态属性、静态方法 Animal
访问 用static 修饰的成员方法表示静态方法,可以直接通过类名来 访问 用static修饰的程序代码块表示静态代码块,当java虚拟机加载 类时,就会执行该代码块
final关键字
• 修饰类 – 不能被继承 • 修饰方法 – 不能被子类重写
• 修饰变量
– 只能在赋值或构造函数中赋值,后期不能进行修改 • 修饰方法参数 – 如果方法参数是基本类型,那方法中不能修改该值 – 如果方法参数是引用类型,那方法中不能修改该对象的地址
由于giveLesson()方法与父 类的实现有所不同,因此 重写了该方法
12
动物 谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
5
生活中的继承
• 子类具有父类的一般特性(包括属性和行为),以及自身 特殊的特性
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?
汽车 引擎数量 外观颜色 刹车 加速 属性 行为
第21页
多态
Java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进
行类型转换 Animal animal = new Dog(); Dog dog = (Dog)animal; //向下转型,把Animal类型转化为Dog类型 Creature creature = animal; //向上转型,把Animal类型转化为Creature类型 如果把引用变量转换为子类类型,称为向下转型, 如果把引用变量转换为父类类型,称为向上转型。 在进行引用变量的类型转换时,会受到各种限制。而且 在通过引用变量访问它所引用的实例的静态属性、静态方法 Animal
访问 用static 修饰的成员方法表示静态方法,可以直接通过类名来 访问 用static修饰的程序代码块表示静态代码块,当java虚拟机加载 类时,就会执行该代码块
final关键字
• 修饰类 – 不能被继承 • 修饰方法 – 不能被子类重写
• 修饰变量
– 只能在赋值或构造函数中赋值,后期不能进行修改 • 修饰方法参数 – 如果方法参数是基本类型,那方法中不能修改该值 – 如果方法参数是引用类型,那方法中不能修改该对象的地址
由于giveLesson()方法与父 类的实现有所不同,因此 重写了该方法
12
Java语言程序设计基础篇中文ppt第六章ppt文档
下标变量
数组元素可以通过下标来访问。数组下标是基于0的, 就 是 说 它 从 0 开 始 到 arrayRefVar.length-1 结 束 。 在 图6.1中的例子中, 数组myList 包含10个double值而 下标是从0到9。
数组中的每个元素都可以使用下面一般被称为下 标变量的语法表示:
public class Test { public static void main(String[] args) {
int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; } values[0] = values[1] + values[4]; } }
使用选择排序法对数组排序(第6.10.1节)。 使用插入排序算法使排序数组 (第6.10.2节)。 使用 Arrays 类中的方法(第6.11节)。
介绍数组
数组是一种数据结构,它表示一组相同类型的数据。
myList reference
数组引用变量
下标 5 处的 数组元素
double[] myList = new double[10];
注意
使用缩略符号时,你必须将声明、 创建和初始化数组都放在一条语句 中。将它们分开会引起语法错误。 例如:下面的语句就是错误的:
double[] myList;
myList = {1.9, 2.9, 3.4, 3.5};
动画
跟踪数组程序
声明数组变量value, 创建一个数组并将它的引用赋值给values
double myList[] = new double[10大小。可以通过使用 arrayRefVar.length
Java语言程序设计课件(第六章)
{
String phoneSetType;
String getSetType()
{ return phoneSetType; }
}
extends
返回
Example(2)
6-6
abstract class Number_PhoneCard extends PhoneCard
{
long cardNumber;
ctahrids(Ncunm, pbewr,=bc)n;;
password = pw;
balance = b;
connectNumber = c; }
子类中的构造函数
6-2
• 不专门定义自己的构造函数,自动调用父类的无参 构造函数
• 定义自己的构造函数并调用父类有参数构造函数
¾ 使用supper调用父类有参数构造函数,该语句 必须是该子类构造函数的第一条语句
• 继承层次结构(tree-like/network-like)
•关系
• 子类对象是 一个父类对象 • 一个父类对象不是一个子类对象
• 使用显式转换可以将一个父类引用转换为一个子类 的引用
示例- 继承的层次图
6-4
PhoneCard
电话卡
返回
剩余金额
继承
拨打电话 查询余额
None_Number_PhoneCard
方法的继承与覆盖
6-1
• 方法的继承 : IC-Card
• 方法的覆盖 —子类重新定义与父类同名的方法 —要求
• 新旧方法必须有相同方法名、参数表、返回 类型 (如果只有方法名相同,则是重载)
• 方法必须是 non-static
Example(1)
6-1
《Java程序设计实例教程》课件第6章
【相关知识及注意事项】 1.Applet简介 2.Applet的生命周期 3.Applet程序的基本结构 4.HTML文件中与Applet相关的标记 5.Applet中输出文字的基本方法
6.2 “同页Applet间的通信”案例
【案例说明】 本案例建立两个Applet小应用程序,一个
完成发送信息功能,另一个完成接受信息功 能。程序运行界面如图6-4所示。
6.1 “绘制统计图 ”案例
【案例说明】 本 实 例 设 计 一 个 Applet 小 应 用 程 序 , 通 过 HTML向Applet传递参数,绘制出统计图1 饼状统计图
【案例目的】
(1)掌握JApplet类及实现一个简单Applet程序 的过程;
(2)掌握Applet小应用程序的基本结构及方法 在程序中的作用;
(3)掌握HTML文件中与Applet相关的标记; (4)掌握Applet小程序与网页之间的传值方法; (5)掌握Font类和Color类的常用方法及其使
用。。
【技术要点】
(1)在HTML文件中使用<param>标记,定义 参数,并指定参数的值;
(2)在Applet小应用程序的init()方法中,使用 getParameter()方法读取HTML文件中的参数值, 在paint()方法中利用画圆弧的方法绘制圆盘状 统计图。
图6-4 同页Applet间的通信
【案例目的】 学习并掌握同页Applet间的通信。
【技术要点】
通过getAppletContext()方法得到当前运行页的 环境上下文AppletContext对象,再通过这个对 象的getApplet()方法得到指定的Applet。
【相关知识及注意事项】 1.同页Applet间的通信 2.Applet与浏览器间的通信
Java第2版第6章.ppt
默认的友元访问控制符,在同一个包中的其他类可以访问此方法,而其他包 中的类不能访问该方法。 最终修饰符。指定该方法不能被重载。
静态修饰符。指定不需要实例化一个对象就可以激活的方法。
同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加 锁,以防止其他线程访问,运行结束后解锁。
语句序列; return [表达式]; } …… }
2020/11/2
11
其中class前面方括号“[]”中的类修饰符是可 选项,用来说明类的特殊性质,类修饰符分为访问控 制符、抽象类说明符、友元类说明符和最终类说明符 四种。各修饰符的含义如表6.1所示。
2020/11/2
12
表6.1类修饰符的含义
第6章 类与对象
陈国君
2020/11/2
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/11/2
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中,类 (Class)和对象(Object)是面向对象程序设计方法 中最核心的概念。
2020/11/2
16
表6.3成员方法修饰符的含义
修饰符 public private protected friendly final static synchronized
含义
公共访问控制符。指定该方法为公共的,它可以被任何对象的方法访问。
静态修饰符。指定不需要实例化一个对象就可以激活的方法。
同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加 锁,以防止其他线程访问,运行结束后解锁。
语句序列; return [表达式]; } …… }
2020/11/2
11
其中class前面方括号“[]”中的类修饰符是可 选项,用来说明类的特殊性质,类修饰符分为访问控 制符、抽象类说明符、友元类说明符和最终类说明符 四种。各修饰符的含义如表6.1所示。
2020/11/2
12
表6.1类修饰符的含义
第6章 类与对象
陈国君
2020/11/2
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/11/2
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中,类 (Class)和对象(Object)是面向对象程序设计方法 中最核心的概念。
2020/11/2
16
表6.3成员方法修饰符的含义
修饰符 public private protected friendly final static synchronized
含义
公共访问控制符。指定该方法为公共的,它可以被任何对象的方法访问。
Java语言程序设计基础教程课件(第6章)
通过滚动条来观察每个组件
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)
card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
只能向滚动面板添加一个组件
构造方法
ScrollPane() ScrollPane(int a)
a的取值: 1)SCROLLBARS_ALWAYS 、
2)SCROLLBARS_AS_NEEDED、
3)SCROLLBARS_NEVER
P134【例6-3】使用ScrollPane容器
con.add(String s,Component b) con.add(Component b,String s)
card.show(con,s) card.first(con) st(con) card.previous(con) card.next(con)
Container(容器)的子类,属内层容器
在外层容器内部实现分块布局
默认布局是FlowLayout布局
常用方法同Frame
java.awt.ScrollPane类——滚动面板
P133 【例6-2】使用Panel容器
6.3.3 ScrollPane
java.awt.ScrollPane——滚动面板
但是它的主要功能是容纳其它组件和容器
容器通过add()方法向容器中添加组件。
有三种类型的常用容器:
Frame、 Panel、 ScrollPane。
6.3.1 Frame
Frame类是Container类的间接子类
可以向窗口添加组件
顶层容器,不容许被添加
默认布局是BorderLayout
方法说明
绘制组件
重绘组件 设置组件的大小和位置 设置组件可见性 设置鼠标指向组件时的光 标形状。 将变化后的界面显示出来 更新组件
Java语言ppt课件(完整版)
封装与访问控制
封装(Encapsulation)的原则:将对象的属性和方法封装在类内部,隐藏实现细节,提供公共接口供 外部访问。
访问控制符(Access Modifiers):使用private、protected、public等访问控制符来控制类成员的可 见性和访问权限。
构造函数(Constructor)与析构函数(Destructor):构造函数用于创建对象并初始化属性,析构函 数用于释放对象占用的资源。
3
2011年,Oracle公司收购Sun公司,成为Java的 新东家
Java语言的历史与发展
2014年,JDK 8发布,引入了 Lambda表达式、Stream API等特性
2021年,JDK 16发布,继续增强 Java语言的功能和性能
Java语言的特点与优势
跨平台性
Java语言编写的程序可以在任何支持Java的 平台上运行,无需修改源代码
1996年,JDK 1.1发 布,增加了对内部类 和反射的支持
1995年,Java语言 正式发布,并推出 JDK 1.0
Java语言的历史与发展
1
1998年,JDK 1.2(也被称为Java 2)发布,增 加了Swing图形用户界面库和Java插件
2
2004年,JDK 5.0发布,引入了泛型、自动装箱/ 拆箱、枚举等特性
JSP页面元素
JSP页面由指令、脚本元素、动作 和内置对象等组成。指令用于控 制JSP页面的整体结构,脚本元素 用于嵌入Java代码,动作用于执 行特定的操作,内置对象则提供 了一些常用的功能。
JSP与Servlet的关系
JSP和Servlet都是Java Web开发 中的重要技术,它们之间有着密 切的联系。JSP页面最终会被转换 成Servlet来处理请求,因此可以 说JSP是Servlet的一种特殊形式 。同时,JSP提供了更加简洁和易 用的页面开发方式,而Servlet则 更适合处理复杂的业务逻辑。
java精装课件第6章
(3)public int read(byte[] b,int off,int len)throws IOException 从输入流中读取长度为len的数据 的数据, 从输入流中读取长度为len的数据,写入字 节数组b中从索引off开始的位置 开始的位置, 节数组b中从索引off开始的位置,返回本 次实际读取的字节数.每调用一次, 次实际读取的字节数.每调用一次,读取 位置移动相应的字节数. 位置移动相应的字节数. 上面的3 read方法若返回 方法若返回 上面的3个read方法若返回1,则表明当前 读取位置已经到达流的末尾位置, 读取位置已经到达流的末尾位置,即已将 流中的字节数据读完,标志流的结束. 流中的字节数据读完,标志流的结束.
DataInputStream dis = new DataInputStream( new BufferedInputStream( new FileInputStream("openFile.png")));
FileInputStream fis= new FileInputStream("openFile.png"); FileInputStream("openFile.png"); BufferedInputStream bis= new BufferedInputStream(fis); BufferedInputStream(fis); DataInputStream dis = new DataInputStream(bis); DataInputStream(bis);
构造方法中的参数可以是包含路径和 文件名的字符串或文件类对象.如果文件 文件名的字符串或文件类对象. 不存在,则建立文件.逻辑值append为 不存在,则建立文件.逻辑值append为 true时 写入的字节数据追加到文件末尾; true时,写入的字节数据追加到文件末尾; 逻辑值append为false时 逻辑值append为false时,写入字节数据覆 盖文件原来的内容. 盖文件原来的内容.
Java语言程序设计-第六章-扩展类与继承ppt课件
完整最新ppt
9
6.4 成员变量的隐藏和方法的重写
1.成员变量的隐藏 子类可以隐藏继承的成员变量,当在子类中定义和父类
中同名的成员变量时,子类就隐藏了继承的成员变量,即子 类对象以及子类自己声明定义的方法操作与父类同名的成员 变量。下面我们看一个例子,在这个例子中子类隐藏了从父 类继承的double型变量。该程序的运行结果如下:
完整最新ppt
11
6.4 成员变量的隐藏和方法的重写
需要注意的是:方法重写时一定要保证方法的名字、
类型、参数个数和类型同父类的某个方法完全相同,只有这 样,子类继承的这个方法才被隐藏。如果子类在准备隐藏继 承的方法时,参数个数或参数类型与父类的方法不尽相同, 那实际上也没有隐藏继承的方法,这时子类就出现两个方法 具有相同的名字 。下面我们看个例子。 程序的运行结果如右图:
6
6.3 子类对象的构造过程
当用子类的构造方法创建一个子类的对象时,子类的构 造方法总是先调用父类的某个构造方法,如果子类的构造方 法没有指明使用父类的哪个构造方法,子类就调用父类的不 带参数的构造方法。因此,我们可以这样来理解子类创建的 对象: (1)将子类中声明的成员变量做为子类对象的成员变量。 (2)父类的成员变量也都分配了内存空间,但只将其中一部分 (继承的那部分)做为子类对象的成员变量。 父类的private 成员变量尽管分配了内存空间, 但它不作为子类的成员变量
完整最新ppt
3
6.2 子类的继承性
1.继承的定义
所谓类继承就是子类继承父类的成员变量和方法作为自 己的成员变量和方法,就好象它们是在子类中直接声明一样。 当然,子类能否继承父类的变量和方法还有一定的限制。下 面对其进行详细介绍。
2.子类和父类在同一包中的继承性
chapter62 JAVA语言基础课件
完成时间:40分钟
阶段2
实现思路及关键代码:
创建测试类WriterTextFileTest测试WriterTextFile的 功能
测试的步骤
使用Scanner从终端读入文件路径 包装System.in并使用它从终端读入文件的内容,把内
容存储在StringBuffer中 创建WriterTextFile类的对象,调用该对象的writer方法
训练要点:
字符流字符流、字符缓冲流、Scanner实现从控制台写 文本文件的功能
阶段2
实现思路及关键代码:
创建类WriterTextFile,此类可以实现把特定的文本 写出到特定的文件中
创建public boolean writer(String path, String content)实现写出的功能
实现文本的写出操作
完成时间:15分钟
讲解完实成现时思间路:和15关分键钟代码
阶段1
实现思路及关键代码:
1、创建测试类BinaryCopyTest 2、使用Scanner从控制台读入文件路径 3、调用BinaryCopy类的copy方法实现二进制文件
拷贝 4、根据copy方法的返回值给出友好提示消息
完成时间:30分钟
阶段2
需求说明:
使用Scanner类和字节流实现二进制文件的复制
阶段1
实现思路及关键代码:
1、创建拷贝类BinaryCopy,在此类中添加public boolean copy(String source, String target)实现拷 贝的方法
2、方法的实现
创建输入输出流的对象 使用循环的机制实现文件的拷贝 关闭流对象 返回执行成功与失败的布尔值
第六讲 java.io(上机)
阶段2
实现思路及关键代码:
创建测试类WriterTextFileTest测试WriterTextFile的 功能
测试的步骤
使用Scanner从终端读入文件路径 包装System.in并使用它从终端读入文件的内容,把内
容存储在StringBuffer中 创建WriterTextFile类的对象,调用该对象的writer方法
训练要点:
字符流字符流、字符缓冲流、Scanner实现从控制台写 文本文件的功能
阶段2
实现思路及关键代码:
创建类WriterTextFile,此类可以实现把特定的文本 写出到特定的文件中
创建public boolean writer(String path, String content)实现写出的功能
实现文本的写出操作
完成时间:15分钟
讲解完实成现时思间路:和15关分键钟代码
阶段1
实现思路及关键代码:
1、创建测试类BinaryCopyTest 2、使用Scanner从控制台读入文件路径 3、调用BinaryCopy类的copy方法实现二进制文件
拷贝 4、根据copy方法的返回值给出友好提示消息
完成时间:30分钟
阶段2
需求说明:
使用Scanner类和字节流实现二进制文件的复制
阶段1
实现思路及关键代码:
1、创建拷贝类BinaryCopy,在此类中添加public boolean copy(String source, String target)实现拷 贝的方法
2、方法的实现
创建输入输出流的对象 使用循环的机制实现文件的拷贝 关闭流对象 返回执行成功与失败的布尔值
第六讲 java.io(上机)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/webnew/
6.2.4 AWT事件继承关系 AWT事件继承关系
AWT事件模型中的每个事件类都是java.util.EventObject类的扩展。 AWTEvent直接继承了EventObject,同时AWTEvent又是所有AWT事件类的 父类。
/webnew/
6.1.2 一个GUI实例 一个GUI实例
这个应用程序很简单,只是在屏幕上显示一个框架组件(JFrame) 。 这种框架组件是一种顶层(Top-Level)容器,在Swing组件中还有其他3种 顶层容器:JWindow、JDialog和JApplet。 如果希望上面的程序在单击框架的关闭按钮后,应用程序退出,可 以添加如下语句: f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/webnew/
6.2.2 事件处理实例
实例中提供了一个按钮,单击该按钮可以使得应用程序在Windows和 Metal观感之间进行切换,下图显示了运行过程中两种不同的观感。
/webnew/
6.2.3 使用事件适配器
/webnew/
6.1.3 面板
JPanel本身也是一个容器,可以向其中添加其他GUI组件(如按钮 JButton);但是JPanel不是顶层容器,因此,要在屏幕上显示JPanel, 必须将它添加到一个顶层容器(如JFrame)中。JPanel还具备在自身表面 绘制图形的功能,可以通过定制的方式在面板表面绘制各种图形。 1. 作为容器 面板作为容纳其他Swing组件的容器是JPanel最常使用的功能之一。 在制作复杂的用户界面时,常常需要使用多个JPanel将复杂的界面分解 为相对较简单的子界面,然后再对每个JPanel进行布局。 下面来看一个将面板作为容器使用的例子。这个例子中分为两步。 (1) 将一个标签和一个文本框添加到面板中。 (2) 再将面板添加到框架中,然后显示框架。
/webnew/
例
/webnew/
6.3.3 网格布局
网格布局(GridLayout)将容器划分为大小相同的网格,把GUI组件向使用 了网格布局的容器中添加时,是按照自左向右,自上而下的位置存放的。 GridLayout类提供了两个构建器: – public GridLayout(int rows, int columns) – public GridLayout(int rows, int columns, int horizontalGap, int verticalGap) rows和columns分别指定划分网格的行数及列数。horizontalGap和 verticalGap用于指定组件在水平和垂直方向上的间隔,默认情况下 均为0。
第6章
GUI 编 程
/webnew/
本章主要内容
6.1 Swing起步 6.2 AWT事件处理 AWT 6.3 布局管理 6.4 常用GUI组件
/webnew/
6.1 Swing起步 Swing起步
/webnew/
向使用网格袋布局的容器中添加组件的代码框架如下:
JPanel p=new JPanel(); JTextField txtField=new JTextField(); p.setLayout(new GridBagLayout());//容器p设置为网格袋布局 //创建约束条件对象 GridBagConstraints constraints=new GridBagConstraints(); //设置具体的约束条件 ... //按照约束条件constraints将txtField添加到p中 p.add(txtField, constraints);
/webnew/
程序代码
运行结果:
/webnew/
6.1.4 改变应用程序的观感
可以用下面的程序片段将应用程序设定为Windows观感:
通常,我们会在程序一开始运行时就设定好观感。但是有的时候,可能 会在程序的运行过程中(Swing组件已经显示出来)要求动态改变观感。这 时候,在使用UIManager.setLookAndFeel(lnfName)语句设定完观感后, 还必须使用SwingUtilities.updateComponentTreeUI()语句来更新所有 的已显示组件的观感。动态改变应用程序观感的一般代码框架可以是: UIManager.setLookAndFeel(lnfName); //设定观感 //更新容器frame内的所有组件的观感 SwingUtilities.updateComponentTreeUI(frame);
/webnew/
6.3.4 网格袋布局
网格袋布局也是将用户界面划分为若干个网格(Grid),不同之处在于: – 网格袋布局中的每个网格的宽度和高度都可以不一样。 – 每个组件可以占据一个或是多个网格。 – 可以指定组件在网格中的停靠位置。 当将一个GUI组件添加到使用了网格袋布局的容器中时,需要指定该组件 的位置、大小以及缩放等一系列约束条件。可以使用一个 GridBagConstraints类型的对象来存储这些约束条件。
/webnew/
6.2 AWT事件处理 AWT事件处理
6.2.1 6.2.2 6.2.3 6.2.4 事件处理简介 事件处理实例 使用事件适配器 AWT事件继承关系
/webnew/
6.2.1 事件处理简介
任何实现了WindowListener接口的类所生成的对象均可以注册到窗口事 件源。由于WindowListener接口中包含了如下的7个方法: public interface WindowListener{ void windowActivated(WindowEvent e); void windowClosed(WindowEvent e); void windowClosing(WindowEvent e); void windowDeactivated(WindowEvent e); void windowDeiconified(WindowEvent e); void windowIconified(WindowEvent e); void windowOpened(WindowEvent e); } 因此,一个类要实现WindowListener接口,就必须实现该接口中的所有7 个方法。
/webnew/
AWT事件模型中共提供了 个事件侦听器接口,其中有 个侦听器 事件模型中共提供了14个事件侦听器接口 其中有7个侦听器 事件模型中共提供了 个事件侦听器接口, 接口的方法不止一个,因而提供了 个相应的适配器类 个相应的适配器类。 接口的方法不止一个,因而提供了7个相应的适配器类。
6.1.1 6.1.2 6.1.3 6.1.4 Swing概述 一个GUI实例 面板 改变应用程序的观感
ቤተ መጻሕፍቲ ባይዱ
/webnew/
6.1.1 Swing概述 Swing概述
在Java 1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。 1996年,Sun公司和Netsacpe公司在一个称为Swing的项目中合作完善了 Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。 JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构 建GUI的一组API。实际上,Swing只是JFC的一部分,其他的还有二维 图形(Java 2D)API以及拖放(Drag and Drop)API等。
/webnew/
例:在一个面板上按照下图所示排列组件;此外,我们还希望面板上 的标签在面板缩放时,大小不改变;文本框在面板缩放时,在水平方 向上能够相应地缩放,而在垂直方向上大小不改变。
/webnew/
6.3.2 边框布局
GUI组件要在屏幕上显示,最终必须被添加到一个顶层容器中。 内容窗格的默认布局管理器是边框布局(BorderLayout)。 不仅是内容窗格,任何使用了BorderLayout布局的容器均提供5个位置用于存放 组件,分别是North、South、East、West以及Center
/webnew/
程序代码
运行结果:
/webnew/
2. 表面重绘
当一个组件需要进行重绘时,事件处理器会通知该组件,从而引起组件 paintComponent(Graphics g)方法的自动调用。 用户永远不需要直接调用该方法。如果用户要求主动发起组件的重绘, 可以调用repaint()方法通知组件需要重绘,从而实现 paintComponent(Graphics g)方法的自动调用。 paintComponent(Graphics g)方法需要的一个图形参数Graphics也是由 系统自动传递进来的。 Graphics类型的对象中存储了用于绘制图形和文本的设置集合(如字体、 颜色)以及绘制图形和文本的工具。 可以通过覆盖(Override)组件的paintComponent(Graphics g)方法,在 组件表面绘制出我们所希望的内容。
用户对应用程序进行操作时会产生事件(Event),例如:单击按钮会产生 一个动作(Action)事件。 在Java中,事件被封装成一个对象,该对象中包含了和事件相关的信息, 如事件源、事件类型等。 给事件源注册事件侦听器,可使用该事件源中的 addXXXListener(aXXXListener)方法。依据事件类型的不同,注册的方 法名也不同。例如给按钮注册一个动作事件侦听器: aButton.addActionListener(aActionListener);
/webnew/
6.3 布 局 管 理
6.3.1 6.3.2 6.3.3 6.3.4 流式布局 边框布局 网格布局 网格袋布局
/webnew/
6.3.1 流式布局
面板的默认布局管理器是FlowLayout。 FlowLayout 类提供了3种构建器public FlowLayout()、public FlowLayout(int alignment)和public FlowLayout(int alignment、int horizontalGap、int verticalGap)。 alignment参数可以取值FlowLayout.LEFT、FlowLayout.CENTER或是 FlowLayout.RIGHT,用于指定组件在一行上的对齐方式。horizontalGap 和verticalGap分别表示组件在水平和垂直方向上的间距(以像素为单位)。 默认情况下,alignment取值为FlowLayout.CENTER,horizontalGap和 verticalGap均取值为5。
6.2.4 AWT事件继承关系 AWT事件继承关系
AWT事件模型中的每个事件类都是java.util.EventObject类的扩展。 AWTEvent直接继承了EventObject,同时AWTEvent又是所有AWT事件类的 父类。
/webnew/
6.1.2 一个GUI实例 一个GUI实例
这个应用程序很简单,只是在屏幕上显示一个框架组件(JFrame) 。 这种框架组件是一种顶层(Top-Level)容器,在Swing组件中还有其他3种 顶层容器:JWindow、JDialog和JApplet。 如果希望上面的程序在单击框架的关闭按钮后,应用程序退出,可 以添加如下语句: f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/webnew/
6.2.2 事件处理实例
实例中提供了一个按钮,单击该按钮可以使得应用程序在Windows和 Metal观感之间进行切换,下图显示了运行过程中两种不同的观感。
/webnew/
6.2.3 使用事件适配器
/webnew/
6.1.3 面板
JPanel本身也是一个容器,可以向其中添加其他GUI组件(如按钮 JButton);但是JPanel不是顶层容器,因此,要在屏幕上显示JPanel, 必须将它添加到一个顶层容器(如JFrame)中。JPanel还具备在自身表面 绘制图形的功能,可以通过定制的方式在面板表面绘制各种图形。 1. 作为容器 面板作为容纳其他Swing组件的容器是JPanel最常使用的功能之一。 在制作复杂的用户界面时,常常需要使用多个JPanel将复杂的界面分解 为相对较简单的子界面,然后再对每个JPanel进行布局。 下面来看一个将面板作为容器使用的例子。这个例子中分为两步。 (1) 将一个标签和一个文本框添加到面板中。 (2) 再将面板添加到框架中,然后显示框架。
/webnew/
例
/webnew/
6.3.3 网格布局
网格布局(GridLayout)将容器划分为大小相同的网格,把GUI组件向使用 了网格布局的容器中添加时,是按照自左向右,自上而下的位置存放的。 GridLayout类提供了两个构建器: – public GridLayout(int rows, int columns) – public GridLayout(int rows, int columns, int horizontalGap, int verticalGap) rows和columns分别指定划分网格的行数及列数。horizontalGap和 verticalGap用于指定组件在水平和垂直方向上的间隔,默认情况下 均为0。
第6章
GUI 编 程
/webnew/
本章主要内容
6.1 Swing起步 6.2 AWT事件处理 AWT 6.3 布局管理 6.4 常用GUI组件
/webnew/
6.1 Swing起步 Swing起步
/webnew/
向使用网格袋布局的容器中添加组件的代码框架如下:
JPanel p=new JPanel(); JTextField txtField=new JTextField(); p.setLayout(new GridBagLayout());//容器p设置为网格袋布局 //创建约束条件对象 GridBagConstraints constraints=new GridBagConstraints(); //设置具体的约束条件 ... //按照约束条件constraints将txtField添加到p中 p.add(txtField, constraints);
/webnew/
程序代码
运行结果:
/webnew/
6.1.4 改变应用程序的观感
可以用下面的程序片段将应用程序设定为Windows观感:
通常,我们会在程序一开始运行时就设定好观感。但是有的时候,可能 会在程序的运行过程中(Swing组件已经显示出来)要求动态改变观感。这 时候,在使用UIManager.setLookAndFeel(lnfName)语句设定完观感后, 还必须使用SwingUtilities.updateComponentTreeUI()语句来更新所有 的已显示组件的观感。动态改变应用程序观感的一般代码框架可以是: UIManager.setLookAndFeel(lnfName); //设定观感 //更新容器frame内的所有组件的观感 SwingUtilities.updateComponentTreeUI(frame);
/webnew/
6.3.4 网格袋布局
网格袋布局也是将用户界面划分为若干个网格(Grid),不同之处在于: – 网格袋布局中的每个网格的宽度和高度都可以不一样。 – 每个组件可以占据一个或是多个网格。 – 可以指定组件在网格中的停靠位置。 当将一个GUI组件添加到使用了网格袋布局的容器中时,需要指定该组件 的位置、大小以及缩放等一系列约束条件。可以使用一个 GridBagConstraints类型的对象来存储这些约束条件。
/webnew/
6.2 AWT事件处理 AWT事件处理
6.2.1 6.2.2 6.2.3 6.2.4 事件处理简介 事件处理实例 使用事件适配器 AWT事件继承关系
/webnew/
6.2.1 事件处理简介
任何实现了WindowListener接口的类所生成的对象均可以注册到窗口事 件源。由于WindowListener接口中包含了如下的7个方法: public interface WindowListener{ void windowActivated(WindowEvent e); void windowClosed(WindowEvent e); void windowClosing(WindowEvent e); void windowDeactivated(WindowEvent e); void windowDeiconified(WindowEvent e); void windowIconified(WindowEvent e); void windowOpened(WindowEvent e); } 因此,一个类要实现WindowListener接口,就必须实现该接口中的所有7 个方法。
/webnew/
AWT事件模型中共提供了 个事件侦听器接口,其中有 个侦听器 事件模型中共提供了14个事件侦听器接口 其中有7个侦听器 事件模型中共提供了 个事件侦听器接口, 接口的方法不止一个,因而提供了 个相应的适配器类 个相应的适配器类。 接口的方法不止一个,因而提供了7个相应的适配器类。
6.1.1 6.1.2 6.1.3 6.1.4 Swing概述 一个GUI实例 面板 改变应用程序的观感
ቤተ መጻሕፍቲ ባይዱ
/webnew/
6.1.1 Swing概述 Swing概述
在Java 1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。 1996年,Sun公司和Netsacpe公司在一个称为Swing的项目中合作完善了 Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。 JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构 建GUI的一组API。实际上,Swing只是JFC的一部分,其他的还有二维 图形(Java 2D)API以及拖放(Drag and Drop)API等。
/webnew/
例:在一个面板上按照下图所示排列组件;此外,我们还希望面板上 的标签在面板缩放时,大小不改变;文本框在面板缩放时,在水平方 向上能够相应地缩放,而在垂直方向上大小不改变。
/webnew/
6.3.2 边框布局
GUI组件要在屏幕上显示,最终必须被添加到一个顶层容器中。 内容窗格的默认布局管理器是边框布局(BorderLayout)。 不仅是内容窗格,任何使用了BorderLayout布局的容器均提供5个位置用于存放 组件,分别是North、South、East、West以及Center
/webnew/
程序代码
运行结果:
/webnew/
2. 表面重绘
当一个组件需要进行重绘时,事件处理器会通知该组件,从而引起组件 paintComponent(Graphics g)方法的自动调用。 用户永远不需要直接调用该方法。如果用户要求主动发起组件的重绘, 可以调用repaint()方法通知组件需要重绘,从而实现 paintComponent(Graphics g)方法的自动调用。 paintComponent(Graphics g)方法需要的一个图形参数Graphics也是由 系统自动传递进来的。 Graphics类型的对象中存储了用于绘制图形和文本的设置集合(如字体、 颜色)以及绘制图形和文本的工具。 可以通过覆盖(Override)组件的paintComponent(Graphics g)方法,在 组件表面绘制出我们所希望的内容。
用户对应用程序进行操作时会产生事件(Event),例如:单击按钮会产生 一个动作(Action)事件。 在Java中,事件被封装成一个对象,该对象中包含了和事件相关的信息, 如事件源、事件类型等。 给事件源注册事件侦听器,可使用该事件源中的 addXXXListener(aXXXListener)方法。依据事件类型的不同,注册的方 法名也不同。例如给按钮注册一个动作事件侦听器: aButton.addActionListener(aActionListener);
/webnew/
6.3 布 局 管 理
6.3.1 6.3.2 6.3.3 6.3.4 流式布局 边框布局 网格布局 网格袋布局
/webnew/
6.3.1 流式布局
面板的默认布局管理器是FlowLayout。 FlowLayout 类提供了3种构建器public FlowLayout()、public FlowLayout(int alignment)和public FlowLayout(int alignment、int horizontalGap、int verticalGap)。 alignment参数可以取值FlowLayout.LEFT、FlowLayout.CENTER或是 FlowLayout.RIGHT,用于指定组件在一行上的对齐方式。horizontalGap 和verticalGap分别表示组件在水平和垂直方向上的间距(以像素为单位)。 默认情况下,alignment取值为FlowLayout.CENTER,horizontalGap和 verticalGap均取值为5。