JAVA图形用户界面的设计与实现.ppt
《JAVA图形用户界面的设计与实现.ppt》由会员分享,可在线阅读,更多相关《JAVA图形用户界面的设计与实现.ppt(74页珍藏版)》请在三一办公上搜索。
1、第7章 图形用户界面的设计与实现,7.1 图形用户界面(GUI)概述,界面设计的主要任务:(1)创建组成界面的各成分和元素,指定它们的属性和位置关系;(2)定义界面事件和各元素对不同事件的响应,实现界面与用户的交互功能;生成界面的类库:java.awt(abstract window toolkit)抽象:操作定义在一个虚拟的窗口中进行,实现跨平台;,界面的元素和成分,容器控制组件用户自定义成分,容 器(1),容器(container):组织其他界面成分和元素的单元,用来存放别的组件。有三种类型的容器:Window、Panel和ScrollPane。,容 器(2):Frame容器,Window
2、是能独立存在的容器,Frame是它的子类。Frame 是有边框容器,通常用作最外层容器,不能被其他容器包含。Frame方法:Frame(String title);add():在Frame中加入其他组件。pack()方法会自动确定Frame的大小,确保Frame容器中的组件都会有与布局相适应的合理大小。setVisible(true):使Frame成为可见。Frame被创建后,它是不可见的。例子:见2007ch7srcSimpleFrame.java,容 器(3):Panel容器,特点:1)没有边框,不能被移动、缩放或关闭。2)不能作为最外层图形界面的容器,不能单独存在只能用做容器组件加入其他
3、容器。3)通常用于层次化界面组件管理。P260:例 7-20 TestPanel.java例子:ch7srcMyFrame.java,组件:图形用户界面的最小单元,用来完成与用户的交互;用户界面标准化的结果,例如:标签、文本框、按钮、菜单等。使用组件的步骤:1)创建组件类的对象,指定其属性;2)使用某种布局策略;3)将组件对象注册给对应的事件监听器,覆盖事件处理方法,实现与用户交互的功能;,组 件,用户自定义成分:如绘制几何图形、使用标志图案等。通常只能起到装饰、美化的作用,不能响应用户的动作,不具有交互功能。,用户自定义成分,7.2 绘制图形 利用 Graphics 类可以绘制文字及直线、矩
4、形、多边形、圆和椭圆等各种图形。对于Application程序:创建 Canvas 对象,并将它加入界面容器中。Applet 类和 Canvas 类都有一个 paint()方法,系统会自动创建一个 Graphics 类的实例作为其参数,实现各种图形绘制;,Graphics 类的常用绘图方法例7-1 DrawFigures.java(p185)drawLine(int x1,int y1,int x2,int y2):绘制直线 drawRect(int x,int y,int width,int height):绘制矩形 fillRect(int x,int y,int width,int he
5、ight):填充矩形,设置字体Font类显示文字:Graphics 类的 drawString()方法,在屏幕的指定位置显示字符串。Font 类:表示一种字体,包含字体类型、字型和字号。如:Font fnt=new Font(“TimesRoman”,Font.BOLD,12);Font 类有三种字体:Font.PLAIN,Font.BOLD,Font.ITALIC。使用字体:Graphics 类的 setFont()方法如:g.setFont(fnt);btn.setFont(fnt);,例7-2AvailableFonts.JavaGraphicsEnviroment类:The Graph
6、icsEnvironment class describes the collection of GraphicsDevice objects and Font objects available to a Java(tm)application on a particular platform.,设置颜色Color类Color 类对象:控制文字或图形的颜色;构造函数:public Color(int Red,int Green,int Blue);各参数取值范围:0255 public Color(float Red,float Green,float Blue);参数取值范围:0.01.0
7、 public Color(int RGB);参数的07位为红色分量,815位为绿色分量,1623位为蓝色分量例:Color blueColor=new Color(0,0,255);/问这是什么颜色?,颜色设置:Graphics 类的 setColor()方法使用自定义的颜色:Color blueColor=new Color(0,0,255);g.setColor(blueColor);使用 Color 类的颜色常量:g.setColor(Color.black);Color 类定义了 13 个静态颜色常量,包括:black(0,0,0)red(255,0,0)green(0,255,0)
8、blue(0,0,255)等。,对 GUI 组件,可用下列方法设置或获取组件的背景色和前景色:public void setBackground(Color c);public Color getBackground();public void setForeground(Color c);public Color getForeground();例7-3 UseColor.Java问题:HTML文件中的参数是以什么形式、如何传入字节码的?,显示图像一、获取图像:Applet 类的 getImage();public Image getImage(URL url,String name)该方法
9、将指定图像文件的内容返回到 Image 对象。方法中的参数 url 是一个 URL(统一资源定位器)地址,也就是图像所在网址。name 是图像文件名。Java 支持的图像文件格式包括bmp,gif,jpeg 等。,二、绘制图像:drawImage(Image img,int x,int y,ImageObserver observer)有4个参数:图像的 Image 对象,显示图像的左上角 x、y 坐标,显示图像的容器对象。如:g.drawImage(image,10,10,this);例7-4DrawMyImage.java,实现动画效果制作步骤:1)构造或获取动画的各帧;2)绘制各帧;动画
10、的各帧可以用绘图的方法绘制,也可在给定关键帧的情况下,采用插值方法生成,还可以用 getImage()方法获取文件中的 gif 或 jpg 格式图像。例 7-5:其中的 paint()方法一次显示一幅图像,并调用 Thread.sleep()方法使程序休眠片刻,从而前一副图像在屏幕上暂留,再显示下一幅图像,形成动画。,7.3 Java 的标准组件与事件处理,每一个可以触发事件的组件被当作事件源。每一个事件都对应专门的监听者,监听者用来接收和处理这种事件。如果一个事件源注册了对应的监听者,那么这种事件就会被监听者接收和处理。这种模式称为“委托模型”。,Java 的事件处理机制:委托事件模型,事件
11、源(可能产生事件的组件)注册:btn.addActionListener(监听者对象);,ActionEvent 事件,监听者(负责监听并处理事件的对象)实现接口:public void actionPerformed(ActionEvent e);,触发事件,调用并传递参数,注册,图7-5 委托事件模型,事件与监听者接口,要注意以下问题:有哪些事件源,可能发生什么事件?将事件源注册给哪个监听者?监听接口包含什么方法?各代表对什么事件的处理?举例:见P215表格,AWT的事件处理模型:监听者对象是实现监听者接口的类的实例。事件源在事件发生时把事件对象发送给注册的监听者。监听者对象会使用事件对象
12、中的信息来决定如何响应事件。注册监听者对象是通过调用事件源的.addXXXListener()来实现的。如下:eventSourceObject.addEventListener(eventListenerObject);,并非每个事件类都只对应一个事件,例如:KeyEvent类对应KEY_PRESSED,KEY_RELEASED,KEY_TYPED三个具体的事件。KeyEvent类的getID()可以返回不同的常量,以此来判断具体的事件类型。,以 JButton为例,关心的事件就是按钮被按下,想注册该事件,就需要调用 JButton的addActionListener()方法,该方法带一个参
13、数实现 ActionListener接口的对象,ActionListener接口只包含一个 actionPerformed()方法,所以,将实现的代码与JButton联系起来的方法就是在类里实现ActionListener接口,而且将该类的对象用JButton 的addActionListener()方法注册。这样 actionPerformed()方法将在按钮被按下时被回调。,事件处理,用内部类实现监听接口:见例子ButtonCounter.java将容器类实现监听接口:见例子FrameCounter.java定义专门的外部类实现监听接口:见例子OuterCounter.java采用事件适配
14、器:见例子AdapterCounter.java,注意适配器是类,不是接口。,7.4 GUI 标准组件概述,Component,Button,组件名,Canvas,TextArea,TextField,List,Scrollbar,Label,TextComponent,Checkbox,Choice,Container,Dialog,Frame,Window,Applet,Panel,ScrollPane,容器,FileDialog,图7-7 AWT 组件层次关系图,Component 类的常用方法 public void add(PopupMenu popup):在组件上加上一个弹出菜单。
15、public Color getBackground():获得组件的背景色。public Font getFont():获得组件使用的字体。public Color getForeground():获得组件的前景色。public Graphics getGraphics():获得绘图用的 Graphics 对象。public void repaint(int x,int y,int width,int height):以指点的坐标点为左上角,重画组件中指点宽、高的区域。public void setBackgound(Color c):设置组件的背景色。public void setEnabl
16、e(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 的对象用来显示文本信息。它不是事件源,不能引发事件。常用方法是
17、getText()和 setText(String s)。按钮(Button)Button 类的常用方法是 getLabel()和 setLabel(String s)。按钮可以引发动作事件,如 ActionEvent。为此,对应的监听者必须实现 ActionListener 接口,并实现相应的 actionPerFormed(ActionEvent e)方法。,动作事件(ActionEvent)ActionEvent 类只包含一个执行动作事件 ACTION_PERFORMED。可触发该事件的动作包括:()按钮-点击;()列表中的某一选项-双击;()菜单项-选择;()文本框-回车;(5)定时器
18、经过一定的时间(a certain amount of time has elapsed),区分不同的事件源 Button btn=new Button(“计算”);btn.setActionCommand(“命令名”);btn.addActionListener(this);/接口的动作响应方法 public void actionPerformed(ActionEvent e)if(e.getActionCommand()=“命令名”)/若无第2句,则用 if(e.getActionCommand()=“计算”)/或者用 if(e.getSource()=btn),public int g
19、etModifiers():判断是否还按了Ctrl、Shift等功能键;该方法返回一个整数,可与 ActionEvent 类的静态常量 ALT_MASK,SHIFT_MASK,CTRL_MASK,META_MASK 比较,用来判断动作事件发生时,是否同时按下某个功能键。目的:将一个动作事件再细分成几个事件;,文本框、文本区域与文本事件,文本域(TextField)与文本区(TextArea)TextField 是单行文本框,TextArea 是多行文本区域。它们都是 TextComponent 的子类。创建 TextArea txtArea=new TextArea(10,45);/10 行
20、25 列的文本区 TextField name=new TextField(“卡号”,8);/初始字符串为“卡号”,可容纳 8个字符,常用方法 父类 TextComponent 的方法 getText():获取文本信息 setText(String text):设置文本内容 setEditable(bollean b):指定文本是否可编辑 isEditable():判断文本是否可编辑 select(int start,int end):选择指定范围内的文本 selectAll():选定全部文本 setSelectionStart(int start)和 setSelectionEnd(int
21、end):设置选定文本的起、止位置 getSelectionStart()和 getSelectionEnd():获得选定文本的起、止位置 getSelectText():获取选定文本的内容,TextField 类的特殊方法:setEchoChar(char c):设置回显字符,用在不希望如实回显的场合(如输入密码时)。getEchoChar():获取屏蔽当前文本域的回显字符。EchoCharIsSet():判断是否设置了屏蔽当前文本域的回显字符。TextArea 类的特殊方法:append(String s):在已有文本后面添加字符串 s insert(String s,int index)
22、:将字符串 s 插入到指定序号处。,(3)事件响应 TextEvent 事件:该类包含代表文本变化(如删除或键入字符)的事件TEXT_VALUE_CHANGED;由TextField 和TextArea 的父类 TextComponent 产生;要响应这个事件,程序应实现 TextListener 接口,并实现响应该事件的方法:public void textValueChanged(TextEvent e);调用 e.getSource 可以获得引发该事件的文本域对象引用。ActionEvent 事件:当用户在文本域按回车键时,可由 TextField 对象产生这一事件。,单、复 选按钮,列
23、表与选择事件,选择事件(ItemEvent)ItemEvent 类包含的是代表选择项的选中状态发生变化的事件 ITEM_STATE_CHANGED。引发这类事件的动作包括:(1)改变列表类 List 对象选项的选择状态。(2)改变下拉列表类 Choice 对象选项的选择状态。(3)改变复选按钮类 Checkbox 对象的选择状态。(4)改变检测盒菜单项 CheckboxMenuItem 对象的选择状态。,ItemEvent 类的主要方法,public ItemSelectable getItemSelectable():返回引发选中状态变化事件的事件源,如选项或状态变化的 List、Choic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图形 用户界面 设计 实现
链接地址:https://www.31ppt.com/p-6509677.html