9Applet程序.ppt_第1页
9Applet程序.ppt_第2页
9Applet程序.ppt_第3页
9Applet程序.ppt_第4页
9Applet程序.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 Applet程序,9.1 Applet简介,Applet 所有Applet程序都是java.applet.Applet或其子类的对象。 作为java.applet.Applet的子类,Applet程序在屏幕上显示一个空白方框。也就是说,只要继承java.applet.Applet类就可以实现一个最简单的Applet程序,但它并不具有任何功能,只是显示一个空白方框。只有重写java.apple.Applet中定义的方法,才能在方框中绘制更为复杂的图形界面 运行方式与Application不同,9.2 Applet生命周期,小应用程序的生命周期相对于Application而言较为复杂。在其

2、生命周期中涉及到Applet类的四个方法(也被JApplet类继承):init()、start()、stop()和destroy()。,Applet的生命周期中有四个状态:初始态、运行态、停止态和消亡态。,当程序执行完init()方法以后,Applet程序就进入了初始态; 然后马上执行start()方法,Applet程序进入运行态; 当Applet程序所在的浏览器图标化或者是转入其它页面时,该Applet程序马上执行stop()方法,Applet程序进入停止态; 在停止态中,如果浏览器又重新装载该Applet程序所在的页面,或者是浏览器从图标中复原,则Applet程序马上调用start()方法

3、,进入运行态; 当然,在停止态时,如果浏览器关闭,则Applet程序调用destroy()方法,进入消亡态。,1init( )方法 创建Applet时执行,只执行一次。 可以在其中进行一些只执行一次的初始化操作,如处理由浏览器传递进来的参数、添加用户接口组件、加载图像和声音文件等。 小应用程序有默认的构造方法,但它习惯于在init()方法中执行所有的初始化,而不是在默认的构造方法内。可以按如下格式书写init()方法:,public void init() /具体代码 ,2start( )方法 多次执行,当浏览器从图标恢复成窗口,或者是返回该主页时执行。 系统在调用完init()方法之后,将自

4、动调用start()方法。而且每当浏览器从图标恢复为窗口时,或者用户离开包含该小应用程序的主页后又再返回时,系统都会再执行一遍start()方法。 该方法是小应用程序的主体,在其中可以执行一些需要重复执行的任务或者重新激活一个线程,例如开始动画或播放声音等。,public void start() /具体代码 ,3stop( )方法 多次执行,当浏览器变成图标时,或者是离开主页时执行,主要功能是停止一些耗用系统资源的工作。 该方法在生命周期中也被多次调用。这样使得可以在用户并不注意小应用程序的时候,停止一些耗用系统资源的工作(如中断一个线程),以免影响系统的运行速度,且并不需要人为地调用该方法

5、。,public void stop() /具体代码 ,4destroy( )方法 用来释放资源,在stop( )之后执行。 浏览器正常关闭时,Java自动调用这个方法。destroy()方法用于回收任何一个与系统无关的内存资源。当然,如果这个小应用程序仍然处于活动状态,Java会在调用destroy()之前,调用stop()方法。,public void stop() /具体代码 ,5. paint方法 还有一个方法在Applet生命周期中一定会经常被调用。不过它不算是java.applet.Applet里面定义的方法,而是继承自java.awt.Container类的,该方法为paint方

6、法。 作用:绘制Applet界面 调用时机: initstartpaint 当你的浏览器窗口放大、缩小或是被别的窗口遮挡又重新显示时,画面都需要重画,因此也都调用这个方法。,public class paint(Graphics g) /具体代码 ,与Applet绘制相关的操作 paint()进行绘图的具体操作,必须由程序员重写。通常由系统自动调用。 update()用于更新图形,需先清除背景、前景,再调用paint方法 repaint()用于重绘图形,当Applet程序对图形做了某些修改后,需通过调用repaint()方法将变化后的图形显示出来,而repaint方法则会自动调用update方

7、法,然后再调用paint()方法将图形重绘。,【例9-1】Applet小程序生命周期内各方法的调用过程 import java.applet.Applet; import java.awt.Graphics; public class Test9_1 extends Applet StringBuffer buffer; static int n=0;/paint被调用次数 public void init() setSize(600,300);/设置窗体大小 buffer = new StringBuffer(); addItem(调用init方法;);/调用自定义方法addItem pub

8、lic void start() addItem(调用start方法; );/调用自定义方法addItem public void stop() addItem(调用stop方法;);/调用自定义方法addItem public void destroy() addItem(调用destroy方法;);/调用自定义方法addItem ,/自定义方法,在方法内调用repaint, /进而通过repaint调用paint方法 private void addItem(String newWord) System.out.println(newWord); buffer.append(newWord

9、); repaint(); /即使不显示调用,系统也会自动调用该方法 public void paint(Graphics g) g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); n+; /打印内容在Applet中 g.drawString(buffer.toString()+paint调用次数:+n, 5, 15); System.out.println(paint调用次数:+n); ,9.3 Graphics类,Java语言的图形坐标与数学中熟知的坐标表示不同,其图形原点坐标在屏幕的左上角,水平向右为X轴正向,垂直向下为Y轴正向,每个坐标

10、点的值表示屏幕上的一个像素点的位置。 表9-1 Graphics类常用成员方法,【例9-2】Graphics类常用方法示例 import java.applet.*; import java.awt.Graphics; public class Test9_2 extends Applet public void paint(Graphics g) g.drawString(打印字符串测试, 50,20);/打印字符串 g.drawLine(50, 40, 130, 40);/画直线 g.drawRect(50, 60, 80, 50);/画矩形 g.drawOval(50, 120, 80,

11、 50);/画椭圆 ,需要注意的是Graphics类本身是一个抽象类,也就是说,要想使用Graphics类中的抽象方法,必须是实现了其抽象类的子类,那么这个子类是谁呢? 通过在“g.drawString(”打印字符串测试“, 50,20);”语句上加断点的方式找到了答案。,9.4 Color类 9.4.1 Color类构造方法,9.4.2 Color类的数据成员,这些常量数据成员还有其对应的大写形式,如black对应的大写形式为BLACK,darkGray对应的大写形式为DARK_GRAY,其规律是,如果表示颜色的单词是一个单词,那么其对应的大写形式是该单词全大写;如果表示颜色的单词是两个单词

12、连接起来的,那么其对应的大写形式是将两个单词大写,中间用“_”连接。,9.4.3 Color类的成员方法,【例9-3】使用Color类中方法设置Applet中字体及图形颜色。 import java.applet.*; import java.awt.Color; import java.awt.Graphics; public class Test9_3 extends Applet public void paint(Graphics g) g.setColor(Color.blue); g.drawString(打印字符串测试, 50,20);/打印字符串 g.setColor(new

13、Color(0,255,0); g.drawLine(50, 40, 130, 40);/画直线 g.setColor(new Color(1f,0f,0f); /注意1f表示是一个float类型的常量 g.drawRect(50, 60, 80, 50);/画矩形 /255二进制形式,前八位对应蓝,绿和红部分为0 g.setColor(new Color(255); g.drawOval(50, 120, 80, 50);/画椭圆 ,9.5 Font类 9.5.1 Font类构造方法,Font f= new Font(黑体,Font.BOLD,28) 9.5.2 Font类的数据成员,9.5

14、.3 Font类的成员方法,9.6 Applet安全性,Applet限制: (1)Applet不能对本地文件作任何形式的使用,如读取、写入、删除、更改文件名、获取文件创建日期、文件大小等,甚至对于一个文件检查其是否存在都做不到。所以不必担心运行一个Applet程序后,电脑中的数据会被窃取或破坏,当然,除非你自己允许让这个Applet程序做这些事情。 (2)Applet不能通过网络连接到其他电脑,唯一能连接的就是它所在网页的那台电脑。 (3)Applet不能使用系统级的API,如读取系统参数、使用JNI接口等。 (4)Applet不能自行更改这些安全性的限制,以防止这些安全限制失效。 Apple

15、t由于有多种限制,所能做的事情并不是很多,通常它们用于显示图片、播放声音、获取用户的键盘输入和鼠标点击,或者更进一步可以编写一些Applet小游戏,这些小游戏可以通过键盘、鼠标与用户进行交互。,9.7 Applet中的参数和参数传递,由于Applet的运行方式与Application不同,它通常需要嵌入到html网页中运行,因此,可以在网页代码中添加Applet小程序的输入参数。通常放在html文件的Applet标记中,下面给出标准的Applet标记语法。 . alternateHTML ,(1)archive属性 可选属性,用来指示Applet执行前被预先载入的类字节码或者是其他资源的压缩文

16、件(*.jar)。当创建了一个jar文件之后,可以使用archive属性指定这个压缩文件的名称。使用jar文件的格式如下: 上面代码说明MyApplet.jar文件中包含了这个Applet所使用的各种文件。当浏览器执行上述代码时,会在这个jar文件中查找运行该Applet所需的文件。如果要在archive属性中指定多个jar文件,需用逗号分割开来。 (2)Code属性 必选属性,指定要执行的Applet名,对于名字后的后缀.class可写可不写。 (3)Width、height属性 必选属性,指定Applet在网页中显示区域的宽度和高度(单位为像素)。,(4)Codebase属性 可选属性,指

17、定了Applet与html文件的相对路径或Applet的绝对路径。如果没有设置该属性,则表明Applet文件与html文件在同一目录中;如果codebase指定的是applet绝对目的地址,则该地址不一定要与html文档在相同的主机上。 (5)Alt属性 可选属性,用来指定Applet不能正常访问或浏览器不支持Java Applet时显示的替代文本。 (6)Name属性 可选属性,指定Applet实例的名字,从而使得相同页上的Applet可以相互查找(并通讯)。 (7)Align属性 可选属性,指定Applet的对齐方式。属性值可以是left、right、top、texttop、middle、

18、absmiddle、baseline、bottom和absbottom。 (8)Vspace、hspace属性 可选属性,指定Applet与显示边框之间的垂直、水平间隔。,(9) 本身并不是Applet标记的属性,而是嵌套在标记中的标记, 用于指定传递给Applet的参数,包括参数名(appletAttribute1)和参数值(value), 在一个嵌有Applet的网页文件中,可有多个param项,也就是说,可以给Applet传递多个参数。 对于传递给Applet的参数可以通过Applet类的getParameter()方法来获取,该方法定义形式如下: public String getParameter(Stringname) 该方法在正常情况下返回参数所对应的值,如果未找到相应的参数,则返回null。需要注意的是这里的参数名称不区别大小写。一般来说,获取参数的代码通常写在Applet的init方法中。,【例9-4】Applet参数传递示例 import java.applet.*; import java.awt.*; import java.awt.Graphics; public class Test9_4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论