JAVA语言与面向对象程序设计-第七章-图形用户界面的设计与实现汇总课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《JAVA语言与面向对象程序设计-第七章-图形用户界面的设计与实现汇总课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 面向 对象 程序设计 第七 图形 用户界面 设计 实现 汇总 课件
- 资源描述:
-
1、第第7章章 图形用户界面的设计与实现图形用户界面的设计与实现7.1 图形用户界面概述图形用户界面概述7.2 用户自定义成分用户自定义成分7.3 Java的事件处理的事件处理7.4 GUI标准组件概述标准组件概述7.5 标签、按钮与动作事件标签、按钮与动作事件7.6 文本框、文本区域与文本事件文本框、文本区域与文本事件7.7 单、复选按钮,列表与选择事件单、复选按钮,列表与选择事件7.8 滚动条与调整事件滚动条与调整事件7.9 画布与鼠标、键盘事件画布与鼠标、键盘事件7.10 布局设计布局设计7.11 Panel与容器事件与容器事件7.12 Frame与窗口事件与窗口事件7.13 菜单的定义与使
2、用菜单的定义与使用7.14 对话框、组件事件与焦点事件对话框、组件事件与焦点事件7.15 小结小结习题习题本章介绍本章介绍Java程序中图形用户界面程序中图形用户界面(GUI)的设计与实的设计与实现。图形用户界面是程序与用户交互的窗口。每个现。图形用户界面是程序与用户交互的窗口。每个图形界面下的图形界面下的Java程序都必须设计、建立自己的图程序都必须设计、建立自己的图形用户界面并利用它接受用户的输入,向用户输出形用户界面并利用它接受用户的输入,向用户输出程序运行的结果。本章将介绍图形用户界面的基本程序运行的结果。本章将介绍图形用户界面的基本组成和主要操作,包括绘制图形,显示动画,使用组成和主
3、要操作,包括绘制图形,显示动画,使用AWT包各组件和实现包各组件和实现Java的事件处理功能等。的事件处理功能等。7.1 图形用户界面概述图形用户界面概述设计和构造用户界面,是软件开发中的一项重要工设计和构造用户界面,是软件开发中的一项重要工作。用户界面是计算机的使用者作。用户界面是计算机的使用者用户与计算机用户与计算机系统交互的接口,用户界面功能是否完善,使用是系统交互的接口,用户界面功能是否完善,使用是否方便,将直接影响到用户对应用软件的使用。图否方便,将直接影响到用户对应用软件的使用。图形用户界面形用户界面(graphics user interface)简称简称GUI,使,使用图形的方
4、式借助菜单、按钮等标准界面元素和鼠用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令,标操作,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式启动操作,并将系统运行的结果同样以图形的方式显示给用户。图形用户界面操作简便,省去了字符显示给用户。图形用户界面操作简便,省去了字符界面用户必须记忆各种命令的麻烦,已经成为目前界面用户必须记忆各种命令的麻烦,已经成为目前几乎所有应用软件的既成标准。所以,学习设计和几乎所有应用软件的既成标准。所以,学习设计和开发图形用户界面,是软件开发人员必修的一课。开发图形用户界面,是软件开发人员必修的
5、一课。随着图形用户界面的普及和界面元素标准化程度的随着图形用户界面的普及和界面元素标准化程度的提高,许多辅助设计和实现图形用户界面的方法和提高,许多辅助设计和实现图形用户界面的方法和工具也相应出现,例如,可视化编程方法允许设计工具也相应出现,例如,可视化编程方法允许设计人员直接绘出图形界面,然后交给专门的工具自动人员直接绘出图形界面,然后交给专门的工具自动编码生成这个图形界面,免除了开发者的许多编程编码生成这个图形界面,免除了开发者的许多编程负担,目前许多应用软件开发工具都具有可视化编负担,目前许多应用软件开发工具都具有可视化编程的功能。程的功能。Java语言中,为了方便图形用户界面的开发,设
6、计语言中,为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件。这个用来生成图形用户界面图形界面的各种事件。这个用来生成图形用户界面的类库就是的类库就是java.awt包。包。AWT是是abstract window toolkit(抽象窗口工具集抽象窗口工具集)的缩写。的缩写。所谓抽象,是因为所谓抽象,是因为Java是一种跨平台的语言,要求是一种跨平台的语言,要求Java程序能在不同的平台系统上运行,这对于图形程序能在不同的平台系统上运行,这对于图形用户界面尤其困难。为了达到这个目标,用户界面尤其困难。为了
7、达到这个目标,AWT类类库中的各种操作被定义成在一个并不存在的库中的各种操作被定义成在一个并不存在的“抽象抽象窗口窗口”中进行。正如中进行。正如Java虚拟机使得虚拟机使得Java程序独立程序独立于具体的软硬件平台一样,于具体的软硬件平台一样,“抽象窗口抽象窗口”使得开发使得开发人员所设计的界面独立于具体的界面实现。也就是人员所设计的界面独立于具体的界面实现。也就是说,开发人员用说,开发人员用AWT开发出的图形用户界面可以开发出的图形用户界面可以适用于所有的平台系统。当然,这仅是理想情况。适用于所有的平台系统。当然,这仅是理想情况。实际上实际上AWT的功能还不是很完全的功能还不是很完全,Jav
8、a程序的图程序的图形用户界面在不同的平台上形用户界面在不同的平台上(例如,在不同的浏览例如,在不同的浏览器中器中)可能会出现不同的运行效果,如窗口大小、可能会出现不同的运行效果,如窗口大小、字体效果将发生变化等。字体效果将发生变化等。首先考察一下图形用户界面的构成。首先考察一下图形用户界面的构成。简单地说,图形用户界面就是一组图形界面成分和简单地说,图形用户界面就是一组图形界面成分和界面元素的有机组合,这些成分和元素之间不但外界面元素的有机组合,这些成分和元素之间不但外观上有着包含、相邻、相交等物理关系,内在的也观上有着包含、相邻、相交等物理关系,内在的也有包含、调用等逻辑关系,它们互相作用、
9、传递消有包含、调用等逻辑关系,它们互相作用、传递消息,共同组成一个能响应特定事件、具有一定功能息,共同组成一个能响应特定事件、具有一定功能的图形界面系统。的图形界面系统。设计和实现图形用户界面的工作主要有两个:设计和实现图形用户界面的工作主要有两个:创建组成界面的各成分和元素,指定它们的属性创建组成界面的各成分和元素,指定它们的属性和位置关系,根据具体需要排列它们,从而构成完和位置关系,根据具体需要排列它们,从而构成完整的图形用户界面的物理外观。整的图形用户界面的物理外观。定义图形用户界面的事件和各界面元素对不同事定义图形用户界面的事件和各界面元素对不同事件的响应,从而实现图形用户界面与用户的
10、交互功件的响应,从而实现图形用户界面与用户的交互功能。能。Java中构成图形用户界面的各种元素和成分可以粗中构成图形用户界面的各种元素和成分可以粗略地被分为三类:容器、控制组件和用户自定义成略地被分为三类:容器、控制组件和用户自定义成分。分。1.容器容器容器是用来组织其他界面成分和元素的单元。一般容器是用来组织其他界面成分和元素的单元。一般说来一个应用程序的图形用户界面首先对应于一个说来一个应用程序的图形用户界面首先对应于一个复杂的容器,如一个窗口。这个容器内部将包含许复杂的容器,如一个窗口。这个容器内部将包含许多界面成分和元素,这些界面元素本身也可能又是多界面成分和元素,这些界面元素本身也可
11、能又是一个容器,这个容器再进一步包含它的界面成分和一个容器,这个容器再进一步包含它的界面成分和元素,依此类推就构成一个复杂的图形界面系统。元素,依此类推就构成一个复杂的图形界面系统。容器的引入有利于分解图形用户界面的复杂性,当容器的引入有利于分解图形用户界面的复杂性,当界面的功能较多时,使用层层相套的容器是非常有界面的功能较多时,使用层层相套的容器是非常有必要的。必要的。2.控制组件控制组件与容器不同,控制组件是图形用户界面的最小单位与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分。控制组件的作之一,它里面不再包含其他的成分。控制组件的作用是完成与用户的一次交互,包括
12、接收用户的一个用是完成与用户的一次交互,包括接收用户的一个命令命令(如菜单命令如菜单命令),接收用户的一个文本或选择输,接收用户的一个文本或选择输入,向用户显示一段文本或一个图形,等等。从某入,向用户显示一段文本或一个图形,等等。从某种程度上来说,控制组件是图形用户界面标准化的种程度上来说,控制组件是图形用户界面标准化的结果,目前常用的控制组件有选择类的单选按钮、结果,目前常用的控制组件有选择类的单选按钮、复选按钮、下拉列表;有文字处理类的文本框、文复选按钮、下拉列表;有文字处理类的文本框、文本区域;有命令类的按钮、菜单等。其中文本框、本区域;有命令类的按钮、菜单等。其中文本框、按钮和标签是前
13、面使用过的按钮和标签是前面使用过的GUI组件。组件。使用控制组件,通常需要如下的步骤:使用控制组件,通常需要如下的步骤:(1)创建某控制组件类的对象,指定其大小等属性。创建某控制组件类的对象,指定其大小等属性。(2)使用某种布局策略,将该控制组件对象加入到某使用某种布局策略,将该控制组件对象加入到某个容器中的某指定位置处。个容器中的某指定位置处。(3)将该组件对象注册给它所能产生的事件对应的事将该组件对象注册给它所能产生的事件对应的事件监听者,重载事件处理方法,实现利用该组件对件监听者,重载事件处理方法,实现利用该组件对象与用户交互的功能。象与用户交互的功能。严格说来,容器也是一种控制组件,因
14、为一个容器严格说来,容器也是一种控制组件,因为一个容器也可以被视为组件而包含在其他容器的内部。也可以被视为组件而包含在其他容器的内部。3.用户自定义成分用户自定义成分除了上述的标准图形界面元素,编程人员还可以根除了上述的标准图形界面元素,编程人员还可以根据用户的需要设计一些用户自定义的图形界面成分,据用户的需要设计一些用户自定义的图形界面成分,例如绘制一些几何图形、使用标志图案等。用户自例如绘制一些几何图形、使用标志图案等。用户自定义成分由于不能像标准界面元素一样被系统识别定义成分由于不能像标准界面元素一样被系统识别和承认,所以通常只能起到装饰、美化的作用,而和承认,所以通常只能起到装饰、美化
15、的作用,而不能响应用户的动作,也不具有交互功能。不能响应用户的动作,也不具有交互功能。7.2 用户自定义成分用户自定义成分本节主要介绍如何利用本节主要介绍如何利用Java类库中的类及其方法来类库中的类及其方法来绘制用户自定义的图形界面成分。编程人员可以利绘制用户自定义的图形界面成分。编程人员可以利用这些方法自由地绘制图形和文字,也可以将已经用这些方法自由地绘制图形和文字,也可以将已经存在的图形、动画等加载到当前程序中来。绘制图存在的图形、动画等加载到当前程序中来。绘制图形和文字将要用到前面已经接触过的类形和文字将要用到前面已经接触过的类Graphics。Graphics是是java.awt包中
16、一个类,其中包括了很多绘包中一个类,其中包括了很多绘制图形和文字的方法。当一个制图形和文字的方法。当一个Applet运行时,执行运行时,执行它的浏览器会自动为它创建一个它的浏览器会自动为它创建一个Graphics类的实例,类的实例,利用这个实例,就可以在利用这个实例,就可以在Applet中随意绘制图形和中随意绘制图形和文字。实际上文字。实际上Applet本身就是一个图形界面的容器。本身就是一个图形界面的容器。而如果希望在图形界面的而如果希望在图形界面的Java Application程序中程序中绘制图形,则需要创建一个绘制图形,则需要创建一个Canvas类的对象加入类的对象加入到这个到这个Ap
17、plication程序的图形界面容器中,程序的图形界面容器中,Canvas对象也拥有一个与对象也拥有一个与Applet类的类的paint()方法相同的方法相同的paint()方法,利用系统传递给这个方法,利用系统传递给这个paint()方法的方法的Graphics类参数对象就可以在类参数对象就可以在Application程序的图程序的图形用户界面中绘制各种图形和文字。形用户界面中绘制各种图形和文字。7.2.1 绘制图形绘制图形利用利用Graphics类可绘制的图形有直线、各种矩形、多类可绘制的图形有直线、各种矩形、多边形、圆和椭圆等。下面的例子综合了这些方法。边形、圆和椭圆等。下面的例子综合了
18、这些方法。例例 7-1 DrawFigures.java 1:import java.awt.*;2:import java.applet.Applet;3:public class DrawFigures extends Applet4:5:public void paint(Graphics g)6:7:g.drawLine(30,5,40,5);/画直线画直线8:g.drawRect(40,10,50,20);/画矩形框画矩形框(左上角左上角x坐标,坐标,左上角左上角y坐标,坐标,x轴尺寸,轴尺寸,y轴尺寸轴尺寸)9:g.fillRect(60,30,70,40);/画实心矩形画实心矩形
19、10:g.drawRoundRect(110,10,130,50,30,30);/画圆角矩画圆角矩形框形框11:g.drawOval(150,120,70,40);/画椭圆形框画椭圆形框(左上角左上角x坐标,左上角坐标,左上角y坐标,坐标,x轴尺寸,轴尺寸,y轴尺寸轴尺寸),若,若x轴尺寸与轴尺寸与y轴尺寸相等,则画出圆形轴尺寸相等,则画出圆形12:g.fillOval(190,160,70,40);/画实心椭圆画实心椭圆13:g.drawOval(90,100,50,40);/画椭圆框画椭圆框14:g.fillOval(130,100,50,40);/画实心椭圆画实心椭圆15:drawMyP
20、olygon(g);/自定义的画多边形的方法自定义的画多边形的方法16:g.drawString(They are figures!,100,220);17:18:public void drawMyPolygon(Graphics g)19:20:int xCoords=30,50,65,119,127;/保存多边形各点保存多边形各点x坐标的数组坐标的数组21:int yCoords=100,140,127,169,201;/保存多边形各点保存多边形各点y坐标的数组坐标的数组22:g.drawPolygon(xCoords,yCoords,5);/画自由多边形框画自由多边形框23:24:图图
21、7.1是例是例7-1的运行结果。从例的运行结果。从例7-1可以看出,要在可以看出,要在Java程序图形界面的容器中绘制图形,首先,需要程序图形界面的容器中绘制图形,首先,需要明确希望绘制的图形是什么,是圆、椭圆,还是直明确希望绘制的图形是什么,是圆、椭圆,还是直线,这由所选定的方法来确定;其次,需要指明所线,这由所选定的方法来确定;其次,需要指明所绘制图形或文字的大小和位置,这要通过相对于界绘制图形或文字的大小和位置,这要通过相对于界面容器的二维像素坐标来决定。面容器的二维像素坐标来决定。Java的屏幕坐标是的屏幕坐标是以像素为单位,容器的左上角被确定为横坐标以像素为单位,容器的左上角被确定为
22、横坐标(x轴轴)和纵坐标和纵坐标(y轴轴)的起点,向右和向下延伸坐标值递的起点,向右和向下延伸坐标值递增。增。图图 7.1 例例7-1的运行结果的运行结果绘制图形的方法很多,每种方法一般也有多种灵活绘制图形的方法很多,每种方法一般也有多种灵活的使用方式,这里不再赘述,读者可以查阅程序员的使用方式,这里不再赘述,读者可以查阅程序员手册中的详细规定。手册中的详细规定。除了除了Graphics类,类,Java中还定义了其他一些用来表示中还定义了其他一些用来表示几何图形的类,对绘制用户自定义成分也很有帮助。几何图形的类,对绘制用户自定义成分也很有帮助。例如,利用例如,利用Point表示一个像素点;利用
23、表示一个像素点;利用Dimension类表示宽和高;利用类表示宽和高;利用Rectangle类表示一个矩形;类表示一个矩形;利用利用Polygon类表示一个多边形;利用类表示一个多边形;利用Color类表示类表示颜色等,后面的例子中将利用这些系统定义的类绘颜色等,后面的例子中将利用这些系统定义的类绘图。图。7.2.2 显示文字显示文字从前面的例子中可以知道,从前面的例子中可以知道,Graphics类的方法类的方法drawString()可以在屏幕的指定位置显示一个字符可以在屏幕的指定位置显示一个字符串。串。Java中还有一个类中还有一个类Font,使用它可以获得更加,使用它可以获得更加丰富多彩
24、和逼真精确的字体显示效果。丰富多彩和逼真精确的字体显示效果。一个一个Font类的对象表示了一种字体显示效果,包括类的对象表示了一种字体显示效果,包括字体类型、字型和字号。下面的语句用于创建一个字体类型、字型和字号。下面的语句用于创建一个Font类的对象:类的对象:Font MyFont=new Font(TimesRoman,Font.BOLD,12);MyFont对应的是对应的是12磅磅TimesRoman类型的黑体字,类型的黑体字,其中指定字型时需要用到其中指定字型时需要用到Font类的三个常量:类的三个常量:Font.PLAIN,Font.BOLD,Font.ITALIC。如果希望使用该
25、如果希望使用该Font对象,则可以利用对象,则可以利用Graphics类的类的setFont()方法:方法:g.setFont(MyFont);如果希望指定控制组件,如按钮或文本框中的字体如果希望指定控制组件,如按钮或文本框中的字体效果,则可以使用控制组件的方法效果,则可以使用控制组件的方法setFont()。如设。如设btn是一个按钮对象,则语句:是一个按钮对象,则语句:btn.setFont(MyFont);将把这个按钮上显示的标签的字体改为将把这个按钮上显示的标签的字体改为12磅的磅的TimesRoman黑体字。黑体字。另外,与另外,与setFont()方法相对的方法相对的getFont
展开阅读全文