第9章-文字与图形GUI设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第9章-文字与图形GUI设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文字 图形 GUI 设计 课件
- 资源描述:
-
1、第9章 文字与图形GUI设计第9章 文字与图形GUI设计9.1 GUI设计概述设计概述9.2 绘制文字绘制文字9.3 Color类类9.4 绘制形状图形绘制形状图形习题习题9 第9章 文字与图形GUI设计9.1 GUI设计概述设计概述 图形用户界面(Graphics User Interface,简称GUI)就是为应用程序提供一个图形化的界面。GUI使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令、启动操作,并将系统运行的结果同样以图形的方式显示给用户,使一个应用程序具有画面生动、操作简便的效果,省去了字符界面中用户必须记忆各种命令的麻烦,深受广大用户的
2、喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。第9章 文字与图形GUI设计 为了方便编程人员开发图形用户界面,Java提供了抽象窗口工具包(Abstract Windowing ToolKit,缩写为AWT)和Swing包这两个图形用户界面工具包。在这两个工具包中提供了丰富的类库来支持编程人员创建与平台无关的用户界面。编程人员可方便地使用这些类库来生成各种标准图形界面元素并处理图形界面的各种事件。第9章 文字与图形GUI设计9.1.1 图形用户界面元素分类图形用户界面元素分类 1容器容器 容器是用来组织或容纳其他界面成分和元素的组件。一个容器可以包含许多组件,同时它本身也可以作为一个组件
3、,放进另一容器中。一般来说,一个应用程序的图形用户界面首先对应于一个复杂的容器,例如一个窗口。这个容器内部将包含许多界面成分和元素,其中某些界面元素本身也可能又是一个容器,这个容器再进一步包含它的界面成分和元素,依此类推就构成一个复杂的图形界面系统。容器是Java中的类,例如框架(JFrame)、面版(JPanel)及滚动面板(JScrollPanel)等类。容器的引入有利于分解图形用户界面的复杂性。当界面的功能较多时,使用层层相套的容器是非常必要的。第9章 文字与图形GUI设计 2控制组件控制组件 与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分。控制组件的作用是完
4、成与用户的一次交互,包括接收用户的一个命令(如菜单命令),接收用户输入的一个文本或选择,向用户显示一段文本或一个图形等等。从某种程度上来说,控制组件是图形用户界面标准化的结果,目前常用的控制组件有选择类的单选按钮、复选按钮、下拉列表,有文字处理类的文本框、文本区域,有命令类的按钮、菜单等。使用控制组件,通常需要如下的步骤:第9章 文字与图形GUI设计 (1)创建某控制组件类的对象,指定其大小等属性。(2)使用某种布局策略,将该控制组件对象加入到某个容器中的指定位置处。(3)将该组件对象注册给所能产生的事件对应的事件监听程序,重载事件处理方法,实现利用该组件对象与用户交互的功能。第9章 文字与图
5、形GUI设计 3用户自定义成分用户自定义成分 除了上述的标准图形界面元素外,编程人员还可以根据用户的需要,使用各种字型、字体和色彩设计一些几何图形、标志图案等,它们被称为用户自定义成分。用户自定义成分通常只能起到装饰、美化的作用,而不能响应用户的动作,也不具有交互功能。由于用户自定义成分易于学习和掌握,同时,各种基本图形和说明性文字又是容器和控制组件的基本成分,而且考虑到由浅入深的学习规律,因此我们先在本章利用AWT包学习用户自定义成分,在第9章和第10章再学习控制组件和复杂的容器。第9章 文字与图形GUI设计9.1.2 Applet的执行程序的执行程序 Applet是一种执行于Web浏览器的
6、小程序,是通过应用程序架构开发而得到的。在我们编写Web浏览器程序时,我们必须继承class Applet或class JApplet,必须覆盖必要的Applet 的成员方法,这些成员方法控制了Web页面上的applet的生成与执行。为此,有必要先介绍Applet应用程序的执行过程及其所引用的方法。我们编写的每个Applet小程序都是Applet类的子类,在实际运行中,浏览器在下载字节码的同时,会自动创建一个用户Applet子类的对象,并在适当事件发生时自动调用该对象的几个主要方法。下面说明这些方法及其引用过程。第9章 文字与图形GUI设计(1)init()方法。当Applet程序启动时自动调
7、用init()方法。init()方法仅用来做初始化操作。用户程序可以重载父类的init()方法,通过init()方法初始化图像文件、声音文件、字体或者其他一些对象等。(2)start()方法。Applet运行init()方法之后将自动调用start()方法,start()方法体现了小应用程序要完成的功能。我们可以重载父类的start()方法,在这个方法体内实现我们程序的功能。第9章 文字与图形GUI设计(3)paint()方法。它的主要作用是在Applet的界面中显示文字、图形和其他界面元素。浏览器调用paint()方法的事件主要有如下三种。当浏览器首次显示Applet时,会自动调用paint
8、()方法。当用户调整窗口大小或移动窗口时,浏览器会调用paint()方法。当repaint()方法被调用时,系统将首先调用update()方法将Applet对象所占用的屏幕空间清空,然后调用paint()方法重画。第9章 文字与图形GUI设计(4)stop()方法。当用户将浏览Applet程序所在的Web页面切换到其他页面时,浏览器会自动调用stop()方法,让Applet程序终止运行。如果用户又回到Applet程序所在的Web页面,则浏览器将重新启动Applet程序的start()方法。(5)destroy()方法。当用户关闭Applet程序窗口时,浏览器会自动执行此方法来结束程序,释放所占
9、资源。第9章 文字与图形GUI设计9.1.3 JApplet类类在Java的早期版本中,窗体、按钮等组件被列入java.awt包中。随着Java系统的不断改进和功能的增强,在1998年推出JDK1.2版本时,javax.Swing包被列入Java2的基础类库JFC(Java Fundation Classes)中。Swing扩展了AWT组件集,定义了相对于java.awt包的具有更多、更强功能的Swing GUI组件集。javax.Swing.JApplet是java.applet.Applet的子类,且具有如下继承关系:第9章 文字与图形GUI设计java.lang.Object java.
10、awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing.JApplet 第9章 文字与图形GUI设计9.1.4 Java 2D APIJava 2D API是Java用于开发二维图形的API。在Java的AWT和Swing类库中,提供了一些简单的二维图形处理功能。而Java 2D API则提供了强大灵活且独立于图形设备的二维图形处理功能,它是JFC的一个组成部分,它提供了处理二维图形、图像、文字等对象的统一机制和统一的图形转换机制。J2SDK提供的Java 2D API中的核心类和接口有:ja
11、va.awt、java.awt.geom、java.awt.font、java.awt.color、java.awt.image、java.awt.image.renderable及java.awt.print。第9章 文字与图形GUI设计Java 2D API在java.awt包中用于处理二维图形的类和接口有:AlphaComposite、BasicStroke、Color、Composite、CompositeCotext、Font、FontMetrics、GradientPaint、Graphics2D、GraphicsConfiguration、GraphicsEnvironment、
12、Paint、PaintContext、Point、Polygon、Rectangle、Shape、Stroke、TexturePaint及Transparency等。第9章 文字与图形GUI设计Java 2D API在java.awt.geom包中用于定义几何形状的类和接口有:Arc2D、Arc2D.Double、Arc2D.Float、Area、BasicTextUI.BasicCaret、CubicCurve2D、CubicCurve2D.Double、CubicCurve2D.Float、DefaultCaret、Ellipse2D、Ellipse2D.Double、Ellipse2D.
13、Float、GeneralPath、Line2D、Line2D.Double、Line2D.Float、Polygon、QuadCurve2D、QuadCurve2D.Double、QuadCurve2D.Float、Rectangle、Rectangle2D、Rectangle2D.Double、Rectangle2D.Float、RectangularShape、RoundRectangle2D、RoundRectangle2D.Double及RoundRectangle2D.Float。Java 2D API在其他一些包,如java.awt.font、java.awt.color、jav
14、a.awt.image、java.awt.image.renderable及java.awt.print中的类和接口请查阅Java 2D API帮助文档。第9章 文字与图形GUI设计9.1.5 与图形文字有关的类及其继承关系与图形文字有关的类及其继承关系图9.1给出了java.awt包层次的一部分有关文字、颜色和基本图形的类。图中的每一个类都是从类Object直接派生出来的。其中,类Font是用于操作字体的;类Color是用于操作颜色的;类BasicStroke用于创建图形形状轮廓;类Graphics用于绘制各种串、线、矩形、圆和其他几何图形;类Graphics2D则提供了绘制任意几何形状图形
15、的功能。第9章 文字与图形GUI设计BasicStrokeGraphicsObjectColorFontComponentGraphics 2D图9.1 java.awt包中常用的图形文字类(是由Object类派生的)第9章 文字与图形GUI设计9.1.6 Java 2D API坐标系统坐标系统应用Java 2D API绘制文本与图形时有两种坐标系,一种是与设备无关的逻辑坐标系,也称为用户坐标系;另一种是与设备(例如显示器、打印机等)有关的坐标系。Java 2D API具有自动转换两种坐标系的功能。在默认情况下,用户坐标系的原点在绘图表面的左上角,左上角坐标为(0,0),x坐标从左向右递增,y
16、坐标从上向下递增。当文本与图形在屏幕上输出时,坐标单位以像素来度量。我们给出的所有文本与图形都是相对于用户坐标系的。图9.2中的点p表示在用户坐标系中的位置。第9章 文字与图形GUI设计图9.2 Java用户坐标系统pY轴(0,0)X轴第9章 文字与图形GUI设计9.1.7 三种图形对象三种图形对象Graphics2D对象可以输出以下三种图形对象:(1)形状(shape)图形对象。它是一些几何图形类型,如矩形、椭圆、直线和曲线,每种形状对象实现Java.awt.Shape接口。(2)文本(text)图形对象。它可以按不同的字体、风格和颜色输出。(3)图像(image)图形对象。它是java.a
17、wt.image.BufferedImage类的对象。由于图像(image)的内容非常多,因此本章只讲述基础性形状和文本两类图形对象的绘制,偶尔也会用到一些图像的知识。第9章 文字与图形GUI设计9.1.8 Graphics2D对象的属性设置对象的属性设置Graphics2D对象通过其属性来封装绘图用的状态信息。因此,在绘制二维几何图形前,需要对图形对象的属性进行设置。Graphics2D对象提供了下面七个属性的设置和获得方法:(1)Paint属性:用来对要绘制的图形或文字的颜色进行设置。具体设置是通过它的成员方法setPaint()和getPaint()来实现的。例如,假设g2是Graphi
18、cs2D对象,可以用g2.setPaint(Color.green)语句设置g2的paint属性为绿色。(2)Stroke属性:通过setStroke()方法来控制图形轮廓线的形状。例如,用g2.setStroke(new BasicStroke(4)语句设置Graphics2D对象g2的图形轮廓线的宽度为4个像素。第9章 文字与图形GUI设计(3)Front属性:用于设置输出文本的字体。(4)Transformation属性:通过setTransform()方法来实现图形的缩放、旋转和移位等。(5)Composite rule属性:通过setComposite()方法来描述绘图操作如何与存在
19、的背景相复合。(6)Clipping space属性:通过setClip()方法来设置剪切区域(clip area),即它将绘图限制在一个设定的区域内,使绘图操作在这个区域外无效。(7)Rendering hints属性:通过setRenderingHints()方法来控制绘图的质量和速度。第9章 文字与图形GUI设计 9.2 绘绘 制制 文文 字字 9.2.1 绘制文字的成员方法绘制文字的成员方法由于字符串可以用字符串对象、字符数组、字节数组这三种不同形式表示,故Java在Graphics类中相应地提供了三个成员方法来绘制这三种不同形式的字符串(见表9.1)。第9章 文字与图形GUI设计表9
20、.1 绘制字符和字符串的成员方法 成 员 方 法 参 数 说 明 功 能 drawStringString string,int x,int y string 是字符串对象;x,y是起始坐标 以坐标 x,y 为起始位置,用当前的字体和颜色绘制 string代表的字符串 drawCharschar ch,int offset,int number,int x,int y ch 是字符数组名;offset 是要绘制的第一个字符在数组中的下标;number 是要绘制的字符个数;x,y 是起始坐标 从 ch 数组下标为 offset 的位置开始截取number 个字符,从坐标 x,y 处开始用当前的字
21、体和颜色绘制 number 个字符 drawBytes byte by,int offset,int number,int x,int y by 是字节数组名;offset 是要绘制的第一个字符在数组中的下标;number 是要绘制的元素个数;x,y 是起始坐标 从by 数组下标为offset 的位置开始取 number 个字节,从坐标 x,y 处开始用当前的字体和颜色绘制 number 个字符 第9章 文字与图形GUI设计表9.2 绘制字符的常用成员方法 成 员 方 法 参 数 说 明 功 能 drawStringString s,int x,int y s 是字符串对象;x,y为整型的起始
22、坐标 以坐标 x,y 为起始位置,用当前的字体绘制string代表的字符串 drawStringString s,fload x,fload y s 是字符串对象;x,y为浮点型的起始坐标 以坐标 x,y 为起始位置,用当前的字体绘制string代表的字符串 第9章 文字与图形GUI设计【示例程序c9_1.java】使用Graphics类的三个成员方法绘制“WELCOME TO XIAN”。import java.applet.*;import java.awt.*;import javax.swing.*;public class c9_1 extends JApplet private S
23、tring s=WELCOME!;private char c =T,O,a,e,t;private byte b =d,4,X,I,047,A,N;第9章 文字与图形GUI设计public void paint(Graphics g)/覆盖Applet的成员方法 g.drawString(s,50,25);g.drawChars(c,0,2,50,50);g.drawBytes(b,2,5,50,75);第9章 文字与图形GUI设计 在这个程序中,为了学习使用绘制字符和字符串的三个成员方法,我们分别定义了一个字符串对象s、一个字符数组c和一个字节数组b,分别用于保存三行文字内容。最后,我们通
24、过覆盖JApplet类的paint()方法,并在这个方法中引用绘制字符和字符串的成员方法实现了文字的绘制。该程序的运行结果见图9.3。第9章 文字与图形GUI设计图9.3 程序c9_1的运行结果 第9章 文字与图形GUI设计【示例程序c9_2.java】使用Graphics2D类的成员方法绘制“WELCOME TO XIAN”。import java.applet.*;import java.awt.*;import javax.swing.JApplet;public class c9_2 extends JApplet private String s=WELCOME!;private c
25、har c =T,O,a,e,t;private byte b =d,4,X,I,047,A,N;public void paint(Graphics g)第9章 文字与图形GUI设计 /为保证方法可以访问绘图环境的全部功能,把g强制转换成Graphics2D Graphics2D g2=(Graphics2D)g;g2.drawString(s,50,25);g2.drawChars(c,0,2,50,50);/Graphics2D是Graphics的子类,可以继承Graphics类的方法 g2.drawBytes(b,2,5,50,75);第9章 文字与图形GUI设计9.2.2 Font类
展开阅读全文