1、第第7章章图形用户界面的设计与实现图形用户界面的设计与实现7.1图形用户界面(图形用户界面(GUI)概述)概述界面设计的主要任务:(1)创建组成界面的各成分和元素,指定它们的属性和位置关系;(2)定义界面事件和各元素对不同事件的响应,实现界面与用户的交互功能;生成界面的类库:java.awt(abstract window toolkit)抽象:操作定义在一个虚拟的窗口中进行,实现跨平台;界面的元素和成分v容器v控制组件v用户自定义成分容 器(1)1.容器(容器(container):组织其他界面成分和元素的单元,用来存放别的组件。2.有三种类型的容器:Window、Panel和ScrollP
2、ane。ContainerPanelWindowScrollPaneAppletDialogFrameFileDialog容 器(2):Frame容器vWindow是能独立存在的容器,Frame是它的子类。Frame 是有边框容器,通常用作最外层容器,不能被其他容器包含。vFrame方法:1.Frame(String title);2.add():在Frame中加入其他组件。3.pack()方法会自动确定Frame的大小,确保Frame容器中的组件都会有与布局相适应的合理大小。4.setVisible(true):使Frame成为可见。Frame被创建后,它是不可见的。v例子:见2007ch7
3、srcSimpleFrame.java容 器(3):Panel容器特点:1)没有边框,不能被移动、缩放或关闭。2)不能作为最外层图形界面的容器,不能单独存在只能用做容器组件加入其他容器。3)通常用于层次化界面组件管理。P260:例 7-20 TestPanel.javav例子:ch7srcMyFrame.java组件组件:图形用户界面的最小单元,用来完成与用户的交互;用户界面标准化的结果,例如:标签、文本框、按钮、菜单等。使用组件的步骤:1)创建组件类的对象,指定其属性;2)使用某种布局策略;3)将组件对象注册给对应的事件监听器,覆盖事件处理方法,实现与用户交互的功能;组组件件用户自定义成分用
4、户自定义成分:如绘制几何图形、使用标志图案等。通常只能起到装饰、美化的作用,不能响应用户的动作,不具有交互功能。用户自定义成分用户自定义成分7.2绘制图形绘制图形 利用 Graphics 类可以绘制文字及直线、矩形、多边形、圆和椭圆等各种图形。对于Application程序:创建 Canvas 对象,并将它加入界面容器中。Applet 类和 Canvas 类都有一个 paint()方法,系统会自动创建一个 Graphics 类的实例作为其参数,实现各种图形绘制;Graphics类的常用绘图方法类的常用绘图方法例7-1 DrawFigures.java(p185)drawLine(int x1,
5、int y1,int x2,int y2):绘制直线 drawRect(int x,int y,int width,int height):绘制矩形 fillRect(int x,int y,int width,int height):填充矩形 设置字体设置字体Font类类显示文字:Graphics 类的 drawString()方法,在屏幕的指定位置显示字符串。Font 类:表示一种字体,包含字体类型、字型和字号。如:Font fnt=new Font(“TimesRoman”,Font.BOLD,12);Font 类有三种字体:Font.PLAIN,Font.BOLD,Font.ITALI
6、C。使用字体:Graphics 类的 setFont()方法如:g.setFont(fnt);btn.setFont(fnt);例7-2AvailableFonts.JavaGraphicsEnviroment类:The GraphicsEnvironment class describes the collection of GraphicsDevice objects and Font objects available to a Java(tm)application on a particular platform.设置颜色设置颜色Color类类Color 类对象:控制文字或图形的颜色
7、;构造函数:public Color(int Red,int Green,int Blue);各参数取值范围:0255 public Color(float Red,float Green,float Blue);参数取值范围:0.01.0 public Color(int RGB);参数的07位为红色分量,815位为绿色分量,1623位为蓝色分量例:Color blueColor=new Color(0,0,255);/问这是什么颜色?颜色设置:Graphics 类的 setColor()方法1.使用自定义的颜色:Color blueColor=new Color(0,0,255);g.se
8、tColor(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 组件,可用下列方法设置或获取组件的背景色和前景色:public void setBackground(Color c);public Color getBackground();public void setForeground(Color c);public Color getForeground();例7
9、-3 UseColor.Java问题:HTML文件中的参数是以什么形式、如何传入字节码的?显示图像显示图像一、获取图像:一、获取图像:Applet 类的 getImage();public Image getImage(URL url,String name)该方法将指定图像文件的内容返回到 Image 对象。方法中的参数 url 是一个 URL(统一资源定位器)地址,也就是图像所在网址。name 是图像文件名。Java 支持的图像文件格式包括bmp,gif,jpeg 等。二、绘制图像:二、绘制图像:drawImage(Image img,int x,int y,ImageObserver o
10、bserver)有4个参数:图像的 Image 对象,显示图像的左上角 x、y 坐标,显示图像的容器对象。如:g.drawImage(image,10,10,this);例7-4DrawMyImage.java实现动画效果实现动画效果制作步骤:1)构造或获取动画的各帧;2)绘制各帧;动画的各帧可以用绘图的方法绘制,也可在给定关键帧的情况下,采用插值方法生成,还可以用 getImage()方法获取文件中的 gif 或 jpg 格式图像。例 7-5:其中的 paint()方法一次显示一幅图像,并调用 Thread.sleep()方法使程序休眠片刻,从而前一副图像在屏幕上暂留,再显示下一幅图像,形成
11、动画。7.3Java的标准组件与事件处理的标准组件与事件处理v每一个可以触发事件的组件被当作事件源。v每一个事件都对应专门的监听者,监听者用来接收和处理这种事件。v如果一个事件源注册了对应的监听者,那么这种事件就会被监听者接收和处理。这种模式称为“委托模型”。Java的事件处理机制:的事件处理机制:委托事件模型事件源(可能产生事件的组件)注册:btn.addActionListener(监听者对象);ActionEvent 事件监听者(负责监听并处理事件的对象)实现接口:public void actionPerformed(ActionEvent e);触发事件调用并传递参数注册图7-5 委
12、托事件模型事件与监听者接口要注意以下问题:v有哪些事件源,可能发生什么事件?v将事件源注册给哪个监听者?v监听接口包含什么方法?各代表对什么事件的处理?v举例:见P215表格vAWT的事件处理模型:1.监听者对象是实现监听者接口的类的实例。2.事件源在事件发生时把事件对象发送给注册的监听者。3.监听者对象会使用事件对象中的信息来决定如何响应事件。4.注册监听者对象是通过调用事件源的.addXXXListener()来实现的。如下:eventSourceObject.addEventListener(eventListenerObject);v并非每个事件类都只对应一个事件,例如:KeyEven
13、t类对应KEY_PRESSED,KEY_RELEASED,KEY_TYPED三个具体的事件。vKeyEvent类的getID()可以返回不同的常量,以此来判断具体的事件类型。v以 JButton为例,关心的事件就是按钮被按为例,关心的事件就是按钮被按下,想注册该事件,就需要调用下,想注册该事件,就需要调用 JButton的的addActionListener()方法,该方法带一个参数实现 ActionListener接口的对象,ActionListener接口只包含一个 actionPerformed()方法,所以,将实现的代码与JButton联系起来的方法就是在类里联系起来的方法就是在类里实
14、现实现ActionListener接口接口,而且将该类的对象用JButton 的addActionListener()方法方法注册。这样 actionPerformed()方法将在按钮被按下时被回调。事件处理1.用内部类实现监听接口:见例子ButtonCounter.java2.将容器类实现监听接口:见例子FrameCounter.java3.定义专门的外部类实现监听接口:见例子OuterCounter.java4.采用事件适配器:见例子AdapterCounter.java,注意适配器是类,不是接口。7.4GUI标准组件概述标准组件概述ComponentButton组件名CanvasText
15、AreaTextFieldListScrollbarLabelTextComponentCheckboxChoiceContainerDialogFrameWindowAppletPanelScrollPane容器FileDialog图7-7 AWT 组件层次关系图组件层次关系图 Component类的类的常用方法常用方法 public void add(PopupMenu popup):在组件上加上一个弹出菜单。public Color getBackground():获得组件的背景色。public Font getFont():获得组件使用的字体。public Color getForeg
16、round():获得组件的前景色。public Graphics getGraphics():获得绘图用的 Graphics 对象。public void repaint(int x,int y,int width,int height):以指点的坐标点为左上角,重画组件中指点宽、高的区域。public void setBackgound(Color c):设置组件的背景色。public void setEnable(boolean b):设置组件的使能状态。public void setFont(Font f):设置组件的字体。public void setSize(int width,int height):设置组件大小。public void setVisible(boolean b):设置组件是否可见的属性。public void setForeground(Color c):设置组件的前景色。public void requestFocus():使组件获得注意的焦点。标签、按钮和动作事件标签、按钮和动作事件1.标签(标签(Label)标签类 Label 的对象用来显示文本信息
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1