Java高级程序设计
Java高 级 程序 设计
? 第一部分
– 第一章 Java入门基础
– 第二章 异常
– 第三章 Java Applet类型
– 第四章 图形用户界面 GUI(一) ——AWT
– 第五章 Java中的事件处理机制
– 第六章 图形用户界面 GUI(二) ——Swing
Java高 级 程序 设计
– 第七章 多线程
– 第八章 I/O输入输出流
– 第九章 Java数据库连接( JDBC)
– 第十章 Java网络编程
? 第二部分
– 第一章 Java API
– 第二章 Java与多媒体
– 第三章 Java Bean基础
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
第四章
图形用户界面 GUI
(一) ——AWT
? 4.1 AWT工具集简介
? 4.2 AWT事件模型
? 4.3 GUI组件上的图形操作
? 4.4 常用的 AWT组件
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.1 AWT工具集简介
? GUI
– 即图形用户界面( Graphics User Interface),它是用户与
程序之间的一个接口,程序通过 GUI为用户提供方便操作的
图形化的界面,通常包括窗口、菜单、按钮、选择按钮、文
本框、工具栏等元素。
? AWT
– 即抽象窗口工具包( Abstract Window Toolkit),是 Java
API为 Java程序提供的建立图形用户界面的基本工具集,
AWT可用于 Java Application和 Java Applet的图形用户界面
的创建。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.1 AWT工具集简介
--组件与容器
? 组件( Component)
– 各种各样的类,它们封装了图形系统的许多最小单位,
例如按钮、菜单、文本框等。
? 容器( Container)
– 也是组件,它最主要的作用是装载其它组件,以实现图
形界面上的布局,如窗口( Frame)、面板( Panel)
等。
– 类似面板这样的容器也常被当作组件添加到其它容器中,
以便完成复杂的界面设计。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.1 AWT工具集简介
--AWT类层次结构图
? AWT类层次结构图如下:
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.2 AWT事件模型
? 事件处理简介
– Java GUI程序是事件驱动的,要让图形界面响应用户的操作,就
必须给各组件加上相应的事件处理代码。
– 在事件处理过程中,主要包括 3个部分:
? Event, 事件,用户对界面组件的操作在 Java语言上的描述,
以类的形式出现,如键盘操作事件的类是 KeyEvent。
? Event Source, 事件源,事件发生的场所,通常就是各个组
件,例如按钮 Button。
? Event Handling, 事件处理,接收事件对象并对其进行处理,
由事件监听器( Event Listener)实现。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.2 AWT事件模型
--授权事件模型
? 授权事件模型简介
– Java采用 授权事件模型 ( Delegation Event Mode)的
事件处理机制,也称为委托事件模型。
– 当用户与 GUI的组件交互,触发了相应的事件时,组件
本身并不直接处理事件,而是将事件的处理工作委托给
事件监听器。
? java,awt,event包包含了 Java AWT的事件类和
事件监听器类,见教材表 4-1
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.3 GUI组件上的图形操作
? GUI组件上的图形操作:
– GUI组件上的图形操作主要包括:绘制二维图形、控制
颜色和字体等等。
– java,awt 包中提供了许多图形操作的类:
? Graphics类:提供了许多处理图形的方法,如绘制线条、
各种矩形、各种椭圆、弧线和多边形等。
? Color类:包含了操作颜色的方法和常量。
? Font类:包含了操作字体的方法和常量。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.3 GUI组件上的图形操作
--组件重绘
? 组件重绘
– AWT线程在重新绘制组件(如最小化后恢复)时,会自动
调用组件的 paint( )方法(在 Component类中定义),paint( )
方法定义的如下,public void paint(Graphics g)
– 因此,组件重绘的代码应该在 paint( )方法中编写。由于不能
直接进入到某个组件的 paint( )方法中修改其代码,所以,常
用的处理方式是,定义一个继承需重绘组件的子类,在子类
中重写 paint( )方法,在这个新的 paint( )方法中编写重绘代
码。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.3 GUI组件上的图形操作
--绘制基本图形
? Graphics类提供了许多绘制基本图形的方法:
– 绘制直线
– 绘制矩形
– 绘制椭圆
– 绘制弧线
– 绘制多边形
– 绘制文本
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制直线
? 绘制直线方法:
void drawLine(int x1,int y1,int x2,int y2)
? 描述:
在点( x1,y1)和点( x2,y2)之间绘制一条直线
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制矩形
? 绘制矩形的常用方法如下:
– void drawRect(int x,int y,int width,int height)
绘制矩形,点( x,y)为左上角坐标,宽度、高度分别为 width和 height
– void drawRect(int x,int y,int width,int height,
int arcWidth,int arcHeight)
绘制圆角矩形,点( x,y)为外接矩形左上角坐标,arcWidth和
arcHeight分别为弧度和弧高
– void fillRect(int x,int y,int width,int height)
绘制填充矩形
– void fillRoundRect(int x,int y,int width,int height,int
arcWidth,int arcHeight)
绘制填充圆角矩形 返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制椭圆
? 绘制椭圆的常用方法如下:
– void drawOval(int x,int y,
int width,int height)
绘制椭圆,点( x,y)是外切矩形左上角坐标
– void fillOval(int x,int y,int width,int height)
绘制填充椭圆
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制弧线
? 绘制弧线的常用方法如下:
– void drawArc(int x,int y,int width,int height,
int startAngle,int arcAngle)
绘制弧线,前 4个参数含义同椭圆,startAngle为起始弧
度值,逆时针绘制弧线( 3点钟方位为 0度),arcAngle
为弧角度
– void fillArc(int x,int y,int width,int height,
int startAngle,int arcAngle)
绘制填充弧线 返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制多边形
? 绘制多边形的常用方法如下:
– void drawPolygon(int[] xPoints,int[] yPoints,
int nPoints)
制多边形,数组 xPoints和 yPoints表多边形顶点坐标,
nPoints表顶点数目
– void fillPolygon(int[] xPoints,int[] yPoints,
int nPoints)
绘制填充多边形
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
绘制文本
? 绘制文本(字符串)方法:
void drawString(String str,int x,int y)
? 描述:
从点( x,y)处开始从左至右绘制字符串 str
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.3 GUI组件上的图形操作
--建立字体
? 建立字体
– 字体类 Font的常用构造方法:
public Font(String name,int style,int size)
? name用于指定字体名
? style指定字体样式( Font.BOLD,Font.ITALC、
Font.PLAIN)
? size用于指定字体大小
– setFont()方法用于设定文本当前使用的字体:
void setFont(Font font)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
? 常用的 AWT组件:
– Frame类
– 文本框和文本区
– 按钮和标签
– 面板和画布
– 布局设计
– 选择型组件
– Component类的常用方法
– Dialog类
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--Frame类
? Frame类
– 是一个容器类,其对象就是一个 Java应用程序窗口,其
它各种组件可以添加到 Frame中
? 构造方法:
– public Frame( )
– public Frame(String title)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Frame类
? Frame类常用方法:
– public void setVisible(boolean b)
– public void setSize(int width,int height)
– public String setTitle(String title)
– public void setBounds(int x,int y,
int width,int height)
– public void setResizable(boolean b)
– public void dispose( )
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--文本框和文本区
1、文本框( TextField)
? 单行文本框,可以向其中输入一行字符串或对其内容
进行修改
? 构造方法:
– public TextField(String text)
– public TextField(int columns)
– public TextField(String text,int columns)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
TextField
? TextField类常用方法:
– public void setText(String text)
– public String getText( )
– public void setEchoChar(char c)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
TextArea
2、文本区( TextArea)
? 多行文本框,或称文本区,同样用于显示文本字符串,
用户也可以对其中的字符串进行编辑
? 构造方法:
– public TextArea(String text)
– public TextArea(int rows,int columns)
– public TextArea(String text,int cows,
int columns)
– public TextArea(String text,int cows,
int columns,int scrollbars)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
TextArea
? TextArea类常用方法:
– setText(String),getText( )
与 TextField对应方法功能相同
– public void append(String str)
– public void insert (String str,int position)
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--按钮和标签
1、按钮( Button)
? 用来响应用户的点击动作
? 构造方法:
– public Button( )
– public Button(String label)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Button
? Button类常用方法:
– public String getLabel( )
– public void setLabel(String label)
– public String getActionCommand( )
– public void setActionCommand
(String command)
– public void addActionListener
(ActionListener listener)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Label
2、标签( Label)
? 提供了显示某段文本的功能,但用户无法修改 Label显示的文本内容
? 构造方法:
– public Label(String text)
– public Label(String text,int alignment)
? 常用方法:
– public String getText( )
– public void setText(String text) 返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--面板和画布
1、面板( Panel)
? 可作为容器容纳其它组件,但是不能独立存在。通常,可
在 Panel中添加若干组件后,再放到另一个容器里,叫做
容器的嵌套,可实现较复杂的界面布局。
? 构造方法:
– public Panel( )
– public Panel(LayoutManager layout)
? 可使用 add方法向 Panel中添加组件:
– Panel对象,add(组件 )
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
ScrollPane
? 带滚动条的面板 —— ScrollPane
? 构造方法:
– public ScrollPane( )
– public ScrollPane(int scrollbarDisplayPolicy)
? 参数 scrollbarDisplayPolicy取值如下:
– ScrollPane,SCROLLBARS_ALWAYS
– ScrollPane,SCROLLBARS_AS_NEEDED
– ScrollPane,SCROLLBARS_NEVER
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
画布
2、画布( Canvas)
? 表示屏幕上的一块空白矩形区,它不是容器,而是一个可
以在其上进行绘制图形或图片
? 创建自己的画布对象的常用方法是继承 Canvas类,并覆
盖 Canvas类的 paint( )方法来绘制该画布的外观。需要注
意的是,要在创建画布类的构造方法中给定画布的尺寸。
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--布局设计
? 布局设计
– 进行图形界面设计,不仅仅只是将组件加到容器中而已,
为使界面合理、美观,我们还应该控制组件在容器中的
位置,即进行布局设计。
– 布局管理器 ( Layout Manage)为容器内组件的排列提
供了布局策略,每个容器都拥有布局管理器,用于负责
容器内组件的排列。
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
AWT布局管理器类
? java,awt类库中共定义了 5种布局管理器类,分
别是:
BorderLayout,FlowLayout,GridLayout、
GridBagLayout 和 CardLayout
? 各种容器类组件都可以使用方法:
setLayout(布局管理器对象)
来设定自己的布局方式
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
BorderLayout
1,BorderLayout
? 将容器空间分为 NORTH,SOUTH,WEST,EAST、
CENTER5个区域,每个组件将占据某个区域
? 构造方法:
– public BorderLayout( )
– public BorderLayout(int hgap,int vgap)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
FlowLayout
2,FlowLayout
? 使用这种布局策略的容器将其中的组件按加入的先后顺序
从左到右排列,一行排满就转到下一行继续从左往右排列,
每行的组件默认都是按居中对齐排列的。
? Panel的默认布局管理器是 FlowLayout
? 构造方法:
– public FlowLayout( )
– public FlowLayout(int align)
– public FlowLayout(int align,int hgap,int vgap)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
GridLayout
3,GridLayout
? 像棋盘一样将容器空间划分成若干行 × 列的网格区域,
各个组件将被置于这些划分出来的网格中。
? 构造方法:
– public GridLayout( )
– public GridLayout(int rows,int cols)
– public GridLayout(int rows,int cols,
int hgap,int vgap)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
CardLayout
4,CardLayout
? CardLayout的功能就好比多张卡片叠在一起,可以抽
取其中任意一张来看,但每次只能看到其中的一张卡
片。
? 构造方法:
– public CardLayout( )
– public GardLayout(int hgap,int vgap)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
null布局
5,null布局
? 若不希望使用某种布局策略,而想精确地指定每个组件的
位置和大小,我们可以使用容器的 setLayout( )方法,将参
数设为 null,即为 null布局。
? null布局下要为各个组件设置位置和大小,可使用方法:
– public void setBounds(int x,int y,
int width,int height)
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--选择型组件
1、复选框( Checkbox)
? 提供从“选中”和“未选中”两种状态选其一的功能。当
用户点击复选框时,若原状态是 true(已选中状态),则
变为 false(未选中状态);若原状态状态是 flase,则点击
后状态变为 true。
? 构造方法:
– public Checkbox(String label)
– public Checkbox(String label,boolean state)
– public Checkbox(String label,boolean state,
CheckboxGroup group)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Checkbox
? Checkbox类 常用方法:
– public String getLabel( )
– public void setLabel(String label)
– public boolean getState( )
– public void setState(boolean state)
– public void setCheckboxGroup
(CheckboxGroup g)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
List
2、列表框( List)
? 以目录的形式显示字符串选项,并允许用户从中选取
一项或多项,构成目录的元素,我们称之为列表项
( item)
? 构造方法:
– public List(int rows)
– public List(int rows,boolean multipleMode)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
List
? List类常用方法:
– public void add(String item)
– public void add(String item,int index)
– public String getItem(int index)
– public String getSelectItem( )
– public void remove(int position)
– public void removeAll( )
– public void select(int index)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Choice
3、下拉式列表框( Choice)
? 与 List一样 Choice也支持目录形式的列表,不同的是
用户只能选取其中一项,被选中的项才会显示出来。
? 构造方法:
– public Choice( )
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Choice
? Choice的常用方法大多与 List的常用方法相同,另外,
Choice常使用 select方法来设定选中的项。
– public void select(int pos)
– public void select(String str)
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--Component类的常用方法
? Component类的常用方法如下,各种常用组件
都可以使用这些方法来设置属性:
– public int getX( ),public int getY( )
– public int getWidth( ),public int getHeight( )
– public void setLocation(int x,int y)
– public void setSize(int width,int height)
– public void setBounds(int x,int y,
int width,int height)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Component类的常用方法
? 续 Component类的常用方法:
– public void setVisible(boolean b)
– public void setForeground(Color c)
– public Color getForeground( )
– public void setBackground(Color c)
– public Color getBackground( )
– public void setFont(Font f)
– public Font getFont( )
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Component类的常用方法
? 说明:
– Color类用以表示颜色,其构造方法如下:
? public Color(int r,int g,int b)
– Color类提供了若干静态常量用于表示常见的颜色,如
Color.RED,Color.GREEN,Color.BLUE、
Color.WHITE,Color.GRAY,Color.PINK 等。
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
4.4 常用的 AWT组件
--Dialog类
? Dialog
– 对话框,继承自 Window类,外观与窗口类似,但是右
上角仅有一个关闭按钮,而没有最小化和最大化 /还原
按钮。
– 分类:
? 模式( modal)对话框
? 非模式( non-modal)对话框
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
Dialog
? Dialog类构造方法:
– public Dialog(Frame owner)
– publie Dialog(Frame owner,boolean modal)
– public Dialog(Frame owner,String title)
– public Dialog(Frame owner,String title,boolean modal)
? Dialog类常用方法:
– public String getTitle( )
– public void setTitle(String title)
– public void setModal(boolean modal)
– public void dispose( )
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
FileDialog
? FileDialog
– 文件对话框,Dialog的子类。 FileDialog是一个打开文
件和关闭文件的对话框,并被自动设定为模式对话框,
必须为其指定所有者。
? 构造方法:
– public FileDialog(Frame owner)
– public FileDialog(Frame owner,String title)
– public FileDialog(Frame owner,String title,
int mode)
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
FileDialog
? FileDialog类常用方法:
– public String getDirectory( )
– public void setDirectory(String dir)
– public String getFile( )
– public void setFile(String file)
返 回
Java高 级 程序 设计 图形用户界面 GUI(一) —— AWT
第四章
小 结
? 本章主要介绍了:
– AWT工具集、组件、容器、事件处理、事件模型等
GUI程序设计术语
– 常用 AWT布局管理器的使用
– 常用 AWT容器的使用
– 常用 AWT组件的构造和使用