资源预览内容
第1页 / 共258页
第2页 / 共258页
第3页 / 共258页
第4页 / 共258页
第5页 / 共258页
第6页 / 共258页
第7页 / 共258页
第8页 / 共258页
第9页 / 共258页
第10页 / 共258页
亲,该文档总共258页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第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 菜单的定义与使用 7.14 对话框、组件事件 与焦点事件在Java语言中,为了支持图形用户界面的开发,设计了类库 java.awt包来生成各种标准图形界面元素和处理图形界面的各种事件 。AWT是abstract window toolkit(抽象窗口工具集)的缩写。 7.1 图形用户界面概述图形用户界面的构成:图形用户界面是一组图形界面成分和界面元素的有机组合,这些成分和元素之间不但外观上有着包含、相邻、相交等物理关系,内在的也有包含、调用等逻辑关系,它们互相作用、传递消息,共同组成一个能响应特定事件、具有一定功能的图形界面系统。设计和实现图形用户界面的工作主要两个: 创建组成界面的各元素,指定它们的属性和位置关系,构成完整的图形用户界面的外观。 定义图形用户界面的事件和各界面元素对不同事件的响应,实现与用户的交互。Java中构成图形用户界面的各种元素和成分有三类:容器、控制组件和用户自定义成分。1. 容器容器是用来组织其他界面成分和元素的单元。一个应用程序的图形用户界面首先对应于一个复杂的容器,如一个窗口。利用容器有利于分解图形用户界面的复杂性,当界面的功能较多时,可以使用嵌套的容器。2. 控制组件控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分。控制组件的作用是完成与用户的一次交互,包括 接收用户的一个命令(如菜单命令),接收用户的一个文本或选择输入,向用户显示一段文本或一个图形,等等。使用控制组件的步骤:(1) 创建某控件类对象,指定属性。(2) 使用某种布局,将该控件对象加入到某容器中的指定位置。(3) 将该组件对象注册给它所能产生的事件对应的事件监听者,重载事件处理方法,实现利用该组件对象与用户交互的功能。实际上,容器也是一种控件,因为一个容器也可以被视为组件而包含在其他容器的内部。3. 用户自定义成分绘制几何图形、使用标志图案等。用户自定义成分不能被系统识别和承认,通常只能起到装饰、美化的作用,而不能响应用户的动作,也不具有交互功能。Graphics是java.awt包中一个类,包含绘制图形和文字的方法。当一个Applet运行时,执行它的浏览器自动为它创建一个Graphics实例,利用这个实例,可在Applet中随意绘制图形和文字。若需在图形界面的Java Application程序中绘制图形,则需创建一个Canvas类的对象加入到该Application程序的图形界面容器中,Canvas对象也有一个与Applet类的paint( )方法相同的paint( )方法,利用系统传递给这个paint( )方法的Graphics类参数对象就可以在Application程序的图形用户界面中绘制各种图形和文字。7.2 用户自定义成分7.2.1 绘制图形 利用Graphics类可绘制的图形有直线、各种矩形、 多边形、圆和椭圆等。例 7-1 UsedDrawFigures .javaimport java.awt.*; import java.applet.Applet; public class UsedDrawFigures extends Applet public void paint ( Graphics g)g.drawLine(30,5,40,5); /画直线g.drawRect(40,10,50,20); /画矩形框(左上角x坐标,左上角y坐标,x轴尺寸,y轴尺寸)g.fillRect(60,30,70,40); /画实心矩形g.drawRoundRect(110,10,130,50,30,30); /画圆角矩形框g.drawOval(150,120,70,40); /画椭圆形框(左上角x坐标,左上角y坐标,x轴尺寸,y轴尺寸), / 若x轴尺寸与y轴尺寸相等,则画出圆形g.fillOval(190,160,70,40); /画实心椭圆g.drawOval(90,100,50,40); /画椭圆框g.fillOval(130,100,50,40); /画实心椭圆drawMyPolygon(g); /自定义的画多边形的方法g.drawString(“They are figures!“,100,220); public void drawMyPolygon( Graphics g)int xCoords = 30,50,65,119,127; /保存多边形各点x坐标的数组int yCoords = 100, 140,127,169,201; /保存多边形各点y坐标的数组g.drawPolygon( xCoords,yCoords,5); /画自由多边形框 7.2.2 显示文字Graphics类的方法drawString( )可在屏幕的指定位置显示一个字符串。Font类,可获得更丰富多彩和逼真精确的字体显示效果。一个Font类的对象表示了一种字体显示效果,包括字体、字型和字号。例如:Font MyFont = new Font ( “TimesRoman”, Font.BOLD, 12 ); MyFont对应的是12磅TimesRoman类型的黑体字,其中指定字型时需要用到Font类的三个常量:Font.PLAIN, Font.BOLD, Font.ITALIC。若需使用该Font对象,可利用Graphics类的setFont( )方法:g. setFont ( MyFont );若指定控件的字体效果,如按钮或文本框等, 可使用控件的方法setFont( )。设btn是按钮对象,则语句: btn.setFont(MyFont);把该按钮上显示的字体改为12磅的TimesRoman黑体字。getFont( )方法将返回当前Graphics或组件对象使用的字体。例 7-2 AvailableFonts.javaimport java.applet.*; import java.awt.*;public class AvailableFont extends Applet GraphicsEnvironment gl = GraphicsEnvironment.getLocalGraphicsEnvironment( ); String FontNames = gl.getAvailableFontFamilyNames( ); public void paint(Graphics g) Font current,oldFont; oldFont = g.getFont( );for(int i=0;iUseColor通过改变三个参数的数值(应在0255之间),就可以指 定不同的颜色而不需要重新编译Java Applet程序。 7.2.4 显示图像图像文件有多种格式,如bmp文件、gif文件、tiff文件等等,其中gif是Internet上常用的图像文件格式。Java中可以利用Graphics类的drawImage( )方法来显示图像。import java.awt.*; import java.applet.Applet; public class UsedDrawMyImage extends Applet Image myImage ;public void init( )myImage = getImage(getDocumentBase( ), “Winter.gif“);public void paint(Graphics g)g.drawImage(myImage, 0, 0, this ); /显示图像 例 7-4 UsedDrawMyImage.javadrawImage( )是Graphics类中用来显示图像的方法。第一个参数保存有图像数据的Image对象。第二、第三个参数是图像的左上角点坐标,它们决定了图像在容器中的显示位置。最后一个参数是显示图像的容器对象。this代表当前的Applet对象。 获取、显示本机其它位置处的图像:Image myImage = getToolkit().getImage(“E:新建相册IMG_0207.jpg”); 或:Image myImage = Toolkit.getDefaultToolkit().getImage(“E:新建相册IMG_0207.jpg“); 显示来自网上的某张图片:1.myImage = this.getToolkit().getImage(new URL(“http:/img1.cache.netease.com/cnews/2009/5/19/2009051908423880afd.jpg“);2. myImage = this.getImage(new URL(“http:/news.163.com/09/0519/09/59LR8UHQ000120GU.html“), “http:/img2.cache.netease.com/cnews/2009/5/19/200905191050184a0ea.jpg“);7.2.5 实现动画效果动画是Java Applet最吸引人的特性之一。用Java实现动画的原理与放映动画片类似,取若干相关的图像或图片,顺序、连续地在屏幕上先显示,后擦除,循环往复就可以获得动画的效果。例 7-5 MyShowAnimator.javaimport java.applet.Applet; import java.awt.*; public class MyShowAnimator extends Applet int x=10; Image m_Images;/保存图片序列的Image数组int totalImages = 5; /图片序列中的图片总数int currentImage = 0; /当前时刻应显示的图片序号public void init( )m_Images = new ImagetotalImages;/从当前目录下的images子目录中将Img001.gif到Img0010.gif的文件加载for(int i=0;i=50)add(new Button(Integer.toString(i*6+j); /随机加入按钮elseadd(new Label( ); /随机加入空白 运行结果7.11 Panel与容器事件 从本节开始详细讨论GUI各种容器及其使用方法。1. Container类抽象类Container中包含了所有容器组件都必须具有的方法和功能。(1) add( ): Container类中有多个经过重载的add( )方法,其作用都是把Component组件(基本组件或容器组件)加入到当前容器中。每个被加入容器的组件根据加入的先后顺序获取一个序号。(2) getComponent(int index)与getComponent(int x,int y): 分别获得指定序号或指定(x,y)坐标点处的组件。(3) remove(Component)与remove(int index): 将指定的组件或指定序号的组件从容器中移出。(4) removeAll( ): 将容器中所有的组件移出。(5) setLayout( ): 设置容器
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号