图形用户界面的设计与实现课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《图形用户界面的设计与实现课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 用户界面 设计 实现 课件
- 资源描述:
-
1、图形用户界面的设计与实现77.1 图形用户概述; 7.7 单、复选按钮;7.2 用户自定义成份; 7.8 滚动条;7.3 Java的事件处理; 7.9 鼠标、键盘;7.4 GUI标准组件; 7.10 布局设计;7.5 标签、按钮; 7.11 Panel与容器事件;7.6 文本与文本事件; 7.12 Frame与窗口事件;图形用户界面的设计。7.1 一、GUI的定义:使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形方式显示给用户。 二、Java的AWT库:abstract windows toolkit。 三、图形用
2、户界面的构成:是一组图形界面成份和界面元素的有机组合。 四、容器:用来组织其它界面成份和元素的单元。 五、控制组件:是图形用户界面的最小单位。 六、用户自定义成份:是用户绘制的几何图形、图案组成的,它们只起装作用,不能响应事件。用户自定义成份。7.2 一、Graphics类与用户自定义成份: Graphics类提供了很多绘制图形和文字的方法。这些方法主要是通过方法:paint(Graphics g)来实现的。 在这里要注意图形坐标与平面坐标的区别。 二、绘制简单图形: 1、画直线: 方法是:void drawLine(int startx,int starty,int endx,int end
3、y);(讲例Linedemo.java) 2、画矩形: 方法是:void drawRect(int top,int left,int width,int height); void fillRect(int top,int left,int width,int height); 2、画矩形: 方法是:void drawRect(int top,int left,int width,int height);void fillRect(int top,int left,int width,int height);void drawRoundRect(int top,int left,int wid
4、th,int height,int xDiam,int yDiam);void fillRoundRect(int top,int left,int width,int height,int xDiam,int yDiam);void draw3DRect(int top,int left,int width,int height,boolean d);void fill3DRect(int top,int left,int width,int height,boolean d);(讲例:Rect.java) 3、画圆和椭圆: 方法是:void drawOval(int x,int y,int
5、 width,int height);void fillOval(int x,int y,int width,int height);(讲例:Ellipse.java) 4、画弧: 方法是:void drawArc(int x,int y,int width,int height,int startAngle,int endAngle);void fillArc(int x,int y,int width,int height, int startAngle,int endAngle);(讲例:Arcs.java) 5、画多边形: 方法是:void drawPolygon(int x,int
6、y,int numpoints);void fillPolygon(int x,int y,int numpoints);(讲例:HourGlass.java和HourGlass1.java) 三、绘制文本: Graphics类提供了三个与绘制文本有关的方法: drawByte()、drawChars()、drawString()。 这三个方法一般要和Font、FontMetrics类一起使用。用Font类可以设定字体、字体的样式及大小;用FontMetrics则可以记录和获取当前字体的规格等说明。 Font类有关的方法有: Font(String name,int style,int siz
7、e):创建字体; setFont(Font obj):设置字体; getFont():获得当前Graphics上所使用的字体; String getFontList():返回当前系统可用字体名称数组; getSize()、getStyle()、isPlain()、isBold()、isItalic();(讲例SampleFonts.java和ShowFonts.java) 四、设置颜色: Java的颜色类:Color允许用户任意选择自己所需要的颜色。Color类中定义了一些常用的颜色实例,如下表所示:颜色名称RGB值白色Color.white255.255.255黑色Color.blank0.
8、0.0淡灰Color.lightGray192.192.192灰色Color.gray128.128.128暗灰Color.darkGray64.64.64红色Color.red255.0.0绿色Color.green0.255.0蓝色Color.blue0.0.255黄色Color.yellow255.255.0紫红Color。Magenta255.0.255青蓝Color.cyan0.255.255粉红Color.pink255.175.175橘色Color.orange255.200.0 Color类中提供了以下方法: Color(int red,int green.int blue);
9、 Color(int rgbValue); Color(float red,float green,float blue); setForeground(); setBackground(); setColor(); getColor(); getRed()、getGreen()、getBlue()、getRGB()。(讲例:ColorBar.java) 五、显示图像: Java中处理图像的类是:Image,它也是AWT中的类库之一。Java目前支持的图像格式有:GIF和JPEG两种。对图像操作一般可为三步:创建、加载和显示。1、图像的创建:可利用以下方法: Image createImage
10、(ImageProducer imgProd); Image createImage(int width,int height);2、图像的加载:可利用以下方法: Image getImage(URL url); Image getImage(URL url,String imageName);3、图像的显示:利用的方法为: boolean drawImage(Image imgObj,int x,int y,ImageObserver imgOb);其中: imgOb是一个ImageObserver接口对象,它用来监测图像加载的过程。(讲例:SimpleImageLoad.java) 六、动
11、画制作: Java不仅提了对图形、图像的支持,而且还允许用户实现连续图像的播放,即动画技术。 Java对动画的处理是:首先动画图像一次性从网络上下载完毕或在不影响动画效果的前提下分若干次下载,下载后的图像存放于数组或向量中,用一指针顺序提取,然后逐一显示到屏幕上。 当然动画制作过程中会出现一些意想不到的效果。闪烁便是其中之一。克服它的技术有二: 一是改写update()方法,内定的update()方法是先清除整个画面,然后再调用方法paint()显示图像,改写之后的update()方法为: public void update(Graphics g) paint(g); 二是利用双缓冲技术,双
12、缓冲技术如下: 1、在图形缓冲区内创建将要使用的图形对象:offscreenimage; 2、在Applet的init()方法中,实例化offscreenimage对象; 3、将要画到屏幕上的图像,转画到offscreenimage上; 4、将offscreenimage上的图像,一次性的画到Applet的画面上; 5、改写update()方法。(讲例:Animation.java)Java的事件处理。7.3 一、Java事件处理机制:事件委托处理。 事件处理是GUI编程的核心,Java中的事件就是对象。Java.awt.event包中定义了丰富的事件类型层次。面向对象编程的一个基本原则就是让
13、最适合完成任务的对象完成任务。指定一个对象处理组件事件的过程称为委托(delegation)。事件处理对象称为听众(Listener)。 要让组件的某个活动事件的处理委托给某个听众,就要执行这个组件的addActionListener()方法,传递所要听众的引用。每个组件类都针对该组件产生的每种事件有个addxxxListener()方法。 如下面的程序:(ButtonDelegateTest.java) import java.awt.*; import java.awt.event.*; public class ButtonDelegateTest extends java.applet
14、.Applet public void init() Button b=new Buttob(“I have a listener!”); add(b); ActionListener listener=new TestListener(); b.addActionListener(listener); class TestListener implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(“Listener here:the button was clicked.”)
15、; 上面的程序就使用了事件委托模型:听众:listener是一个实现了接口ActionListener的类对象。接口ActionListener很简单,只有一个方法,它的实现为: public interface ActionListener extends EventListener public abstract void actionPerformed(ActionEvent e); addActionListener()方法的声明要求听众参数实现这个接口: public void addActionListener(ActionListener listener); 由于听众要实现这个
16、接口,所以知道动作事件何时发生,系统可以安全地对听众调用actionPerformed()方法,因为听众必定有actionPerformed()方法。 当然,事件也可以委托给自己,即自我包含类实现事件的听众,构造器把自己作为听众加进行。如: import java.awt.*; import java.awt.event.*; public class SelfButton2 extends Button implements ActionListener public SelfButton2(String Label) super(label); addActionListener(this
17、); public void actionPerformed(ActionEvent e) System.out.println(“Action!”); 二、Java事件的类型: Java所有的事件类和处理事件的监听者接口都定义在java.awt.event包中,其中事件的层次为:EventObjectAWTEventActionEventTextEventAdjustmentEventComponentEventItemEventContainerEventWindowEventFocusEventInputEventPaintEventMouseEventKeyEvent三、Java事件的
18、监听接口: 在java.awt.event包中,有11个事件监听接口,每个接口内部都包含了若干处理相关事件的抽象方法。每个事件类都有一个监听者接口与之相对应,而事件类的每个具体事件类型都有一个具体的抽象方法与之相对应,当事件发生时,这个事件将被封装成一个事件类的对象作为实现参数传递给与之对应的具体方法,由这个方法负责响应并处理发生的事件。如:与ActionEvent类相对应的接口为ActionListener,那么凡是处理ActionEvent事件的类都必须实现这个接口,重载actionPerformed()方法,并由这个方法处理事件。 当然,InputEvent类由于它不对应具体事件,所以它
19、没有接口;而MouseEvent类有两个接口与之相对应,一个是MouseListener,处理单击事件,另一个是MouseMotionListener,处理移动和拖动事件。GUI标准组件概述。7.4 GUI标准组件都定义在java.awt包中,它们的层次关系为:ComponentButtonCanvasContainerChoiceCheckboxTextComponentLabelScrollbarListPanelScrollPanelWindowTextAreaTextFieldAppletFrameDialogFileDialog容器组件名 使用基本组件的步骤为:1、创建基本组件;2、
20、放置到合适位置;3、创建组件对象的监听者。 由于Component类是所有awt组件的抽象父类,它的常用方法为: public void add(PopupMenu popup): public Color getBackground(): public Font getFont(): public Color getForeground(): public Graphics getGraphics(): public void repaint(): public void setBackground(): public void setFont(): public void setSize(
21、): public void setVisible():标签、按钮与动作事件。7.5 一、标签(Label):它的常用方法有 Label(): Label(String str): Label(String str,int alignment):其中alignment的取值为:LEFT、CENTER、RIGHT。 public void setText(String str): public String getText(): public int getAlignment(): public void setAlignment(int alignment):它不能发生事件。(如例:Label
22、Demo.java) 二、按钮(Button):它的作用是用来触发某个事件。按钮在屏幕上显示的外形依赖于Java运行系统所在有具体平台,在AWT中用户无法改变按钮的外形,但在AWT中实现了一个标准按钮的外观和行为。用户可以通过调用它的方法来改变按钮的字体、文本、前景色和背景色。它的常用方法有: Button(): Button(String str): public void setLabel(String str): public String getLabel(): 按钮可以引发动作事件:ACTION_EVENT,具体响应由实现了接口ActionListener的监听者的actionPer
23、formed(ActionEvent e)方法实现。在该方法中,我们可以通过e.getSource()获取引发动作事件的按钮的引用,也可以通过e.getActionCommand()方法获取按钮的标签或事先为这个按钮设置的命令名。(如例:BtnLabelAction.java和ButtonDemo.java) 三、动作事件(ActionEvent):ActionEvent类只包含一个事件,即:ACTION_PERFORMED。能引发这个事件的动作有: 点击按钮、双击列表框中的选项、选择菜单项、在文本框中按回车键等。ActionEvent类的主要方法有:1、public String getAc
24、tionCommand():它返回引发动作事件的命令名。命令名可以通过setActionCommand()方法实现。如: Button btn=new Button(“按钮标签”); btn=setActionCommand(“命令名”); btn.addActionListener(this);那么在监听者按口的方法可以是: public void actionPerformed(ActionEvent e) if(e.getActionCommand()=“命令名”) 当然我们也可以不专门设置命令名,此时命令名就是对象的标签名。2、public int getModifiers():如果引
25、发动作时,用户也按了功能键,那么此方法返回功能键。即: ALT_MASK、CTRL_MASK、SHIFT_MASK、META_MASK.文本框、文本域与文本事件。7.6 Java中用于文本处理的基本组件有:TextFiled和TextArea,它们都是TextComponent类的子类。 一、文本事件(TextEvent): TextEvent类只包含一个事件,即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本域中改变文本时都将引发这个事件。 二、文本域的创建: public TextField(): public TextField(int cols): public
展开阅读全文