JAVA图形用户界面的设计与实现.ppt
《JAVA图形用户界面的设计与实现.ppt》由会员分享,可在线阅读,更多相关《JAVA图形用户界面的设计与实现.ppt(74页珍藏版)》请在冰豆网上搜索。
第第7章章图形用户界面的设计与实现图形用户界面的设计与实现7.1图形用户界面(图形用户界面(GUI)概述)概述界面设计的主要任务:
(1)创建组成界面的各成分和元素,指定它们的属性和位置关系;
(2)定义界面事件和各元素对不同事件的响应,实现界面与用户的交互功能;生成界面的类库:
java.awt(abstractwindowtoolkit)抽象:
操作定义在一个虚拟的窗口中进行,实现跨平台;界面的元素和成分v容器v控制组件v用户自定义成分容器
(1)1.容器(容器(container):
组织其他界面成分和元素的单元,用来存放别的组件。
2.有三种类型的容器:
Window、Panel和ScrollPane。
ContainerPanelWindowScrollPaneAppletDialogFrameFileDialog容器
(2):
Frame容器vWindow是能独立存在的容器,Frame是它的子类。
Frame是有边框容器,通常用作最外层容器,不能被其他容器包含。
vFrame方法:
1.Frame(Stringtitle);2.add():
在Frame中加入其他组件。
3.pack()方法会自动确定Frame的大小,确保Frame容器中的组件都会有与布局相适应的合理大小。
4.setVisible(true):
使Frame成为可见。
Frame被创建后,它是不可见的。
v例子:
见2007ch7srcSimpleFrame.java容器(3):
Panel容器特点:
1)没有边框,不能被移动、缩放或关闭。
2)不能作为最外层图形界面的容器,不能单独存在只能用做容器组件加入其他容器。
3)通常用于层次化界面组件管理。
P260:
例7-20TestPanel.javav例子:
ch7srcMyFrame.java组件组件:
图形用户界面的最小单元,用来完成与用户的交互;用户界面标准化的结果,例如:
标签、文本框、按钮、菜单等。
使用组件的步骤:
1)创建组件类的对象,指定其属性;2)使用某种布局策略;3)将组件对象注册给对应的事件监听器,覆盖事件处理方法,实现与用户交互的功能;组组件件用户自定义成分用户自定义成分:
如绘制几何图形、使用标志图案等。
通常只能起到装饰、美化的作用,不能响应用户的动作,不具有交互功能。
用户自定义成分用户自定义成分7.2绘制图形绘制图形利用Graphics类可以绘制文字及直线、矩形、多边形、圆和椭圆等各种图形。
对于Application程序:
创建Canvas对象,并将它加入界面容器中。
Applet类和Canvas类都有一个paint()方法,系统会自动创建一个Graphics类的实例作为其参数,实现各种图形绘制;Graphics类的常用绘图方法类的常用绘图方法例7-1DrawFigures.java(p185)drawLine(intx1,inty1,intx2,inty2):
绘制直线drawRect(intx,inty,intwidth,intheight):
绘制矩形fillRect(intx,inty,intwidth,intheight):
填充矩形设置字体设置字体Font类类显示文字:
Graphics类的drawString()方法,在屏幕的指定位置显示字符串。
Font类:
表示一种字体,包含字体类型、字型和字号。
如:
Fontfnt=newFont(“TimesRoman”,Font.BOLD,12);Font类有三种字体:
Font.PLAIN,Font.BOLD,Font.ITALIC。
使用字体:
Graphics类的setFont()方法如:
g.setFont(fnt);btn.setFont(fnt);例7-2AvailableFonts.JavaGraphicsEnviroment类:
TheGraphicsEnvironmentclassdescribesthecollectionofGraphicsDeviceobjectsandFontobjectsavailabletoaJava(tm)applicationonaparticularplatform.设置颜色设置颜色Color类类Color类对象:
控制文字或图形的颜色;构造函数:
publicColor(intRed,intGreen,intBlue);各参数取值范围:
0255publicColor(floatRed,floatGreen,floatBlue);参数取值范围:
0.01.0publicColor(intRGB);参数的07位为红色分量,815位为绿色分量,1623位为蓝色分量例:
ColorblueColor=newColor(0,0,255);/问这是什么颜色?
颜色设置:
Graphics类的setColor()方法1.使用自定义的颜色:
ColorblueColor=newColor(0,0,255);g.setColor(blueColor);2.使用Color类的颜色常量:
g.setColor(Color.black);Color类定义了13个静态颜色常量,包括:
black(0,0,0)red(255,0,0)green(0,255,0)blue(0,0,255)等。
对GUI组件,可用下列方法设置或获取组件的背景色和前景色:
publicvoidsetBackground(Colorc);publicColorgetBackground();publicvoidsetForeground(Colorc);publicColorgetForeground();例7-3UseColor.Java问题:
HTML文件中的参数是以什么形式、如何传入字节码的?
显示图像显示图像一、获取图像:
一、获取图像:
Applet类的getImage();publicImagegetImage(URLurl,Stringname)该方法将指定图像文件的内容返回到Image对象。
方法中的参数url是一个URL(统一资源定位器)地址,也就是图像所在网址。
name是图像文件名。
Java支持的图像文件格式包括bmp,gif,jpeg等。
二、绘制图像:
二、绘制图像:
drawImage(Imageimg,intx,inty,ImageObserverobserver)有4个参数:
图像的Image对象,显示图像的左上角x、y坐标,显示图像的容器对象。
如:
g.drawImage(image,10,10,this);例7-4DrawMyImage.java实现动画效果实现动画效果制作步骤:
1)构造或获取动画的各帧;2)绘制各帧;动画的各帧可以用绘图的方法绘制,也可在给定关键帧的情况下,采用插值方法生成,还可以用getImage()方法获取文件中的gif或jpg格式图像。
例7-5:
其中的paint()方法一次显示一幅图像,并调用Thread.sleep()方法使程序休眠片刻,从而前一副图像在屏幕上暂留,再显示下一幅图像,形成动画。
7.3Java的标准组件与事件处理的标准组件与事件处理v每一个可以触发事件的组件被当作事件源。
v每一个事件都对应专门的监听者,监听者用来接收和处理这种事件。
v如果一个事件源注册了对应的监听者,那么这种事件就会被监听者接收和处理。
这种模式称为“委托模型”。
Java的事件处理机制:
的事件处理机制:
委托事件模型事件源(可能产生事件的组件)注册:
btn.addActionListener(监听者对象);ActionEvent事件监听者(负责监听并处理事件的对象)实现接口:
publicvoidactionPerformed(ActionEvente);触发事件调用并传递参数注册图7-5委托事件模型事件与监听者接口要注意以下问题:
v有哪些事件源,可能发生什么事件?
v将事件源注册给哪个监听者?
v监听接口包含什么方法?
各代表对什么事件的处理?
v举例:
见P215表格vAWT的事件处理模型:
1.监听者对象是实现监听者接口的类的实例。
2.事件源在事件发生时把事件对象发送给注册的监听者。
3.监听者对象会使用事件对象中的信息来决定如何响应事件。
4.注册监听者对象是通过调用事件源的.addXXXListener()来实现的。
如下:
eventSourceObject.addEventListener(eventListenerObject);v并非每个事件类都只对应一个事件,例如:
KeyEvent类对应KEY_PRESSED,KEY_RELEASED,KEY_TYPED三个具体的事件。
vKeyEvent类的getID()可以返回不同的常量,以此来判断具体的事件类型。
v以JButton为例,关心的事件就是按钮被按为例,关心的事件就是按钮被按下,想注册该事件,就需要调用下,想注册该事件,就需要调用JButton的的addActionListener()方法,该方法带一个参数实现ActionListener接口的对象,ActionListener接口只包含一个actionPerformed()方法,所以,将实现的代码与JButton联系起来的方法就是在类里联系起来的方法就是在类里实现实现ActionListener接口接口,而且将该类的对象用JButton的addActionListener()方法方法注册。
这样actionPerformed()方法将在按钮被按下时被回调。
事件处理1.用内部类实现监听接口:
见例子ButtonCounter.java2.将容器类实现监听接口:
见例子FrameCounter.java3.定义专门的外部类实现监听接口:
见例子OuterCounter.java4.采用事件适配器:
见例子AdapterCounter.java,注意适配器是类,不是接口。
7.4GUI标准组件概述标准组件概述ComponentButton组件名CanvasTextAreaTextFieldListScrollbarLabelTextComponentCheckboxChoiceContainerDialogFrameWindowAppletPanelScrollPane容器FileDialog图7-7AWT组件层次关系图组件层次关系图Component类的类的常用方法常用方法publicvoidadd(PopupMenupopup):
在组件上加上一个弹出菜单。
publicColorgetBackground():
获得组件的背景色。
publicFontgetFont():
获得组件使用的字体。
publicColorgetForeground():
获得组件的前景色。
publicGraphicsgetGraphics():
获得绘图用的Graphics对象。
publicvoidrepaint(intx,inty,intwidth,intheight):
以指点的坐标点为左上角,重画组件中指点宽、高的区域。
publicvoidsetBackgound(Colorc):
设置组件的背景色。
publicvoidsetEnable(booleanb):
设置组件的使能状态。
publicvoidsetFont(Fontf):
设置组件的字体。
publicvoidsetSize(intwidth,intheight):
设置组件大小。
publicvoidsetVisible(booleanb):
设置组件是否可见的属性。
publicvoidsetForeground(Colorc):
设置组件的前景色。
publicvoidrequestFocus():
使组件获得注意的焦点。
标签、按钮和动作事件标签、按钮和动作事件1.标签(标签(Label)标签类Label的对象用来显示文本信息