《【教学课件】第8章Applet与应用程序.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第8章Applet与应用程序.ppt(26页珍藏版)》请在三一办公上搜索。
1、第8章 Applet与应用程序,Applet应用程序,又称为小应用程序,是嵌入到浏览器中的程序。Applet运行于浏览器上,可以生成生动的页面,进行友好的人机交互,同时还能处理图像、声音、动画等多媒体数据。Applet在Java的成长过程中起到了不可估量的作用,到今天Applet依然是Java程序设计最吸引人的地方之一。本章将介绍如何使用Applet。,8.1 Applet基础,Java Applet是用Java语言编写的小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行,能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。
2、包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。本节介绍Applet的基础知识,包括Applet与浏览器,查看、显示Applet以及Applet生命周期。,8.1.1 查看Applet,在查看Applet时,可以使用支持Java的Web浏览器,或者JDK自带的AppletViewer浏览。其中,在浏览器中显示时,Applet是由嵌入在Web页面中的Applet相关HTML标志来运行。Aappletviewer提供了一个Java运行环境,在其中可测试Applet。appletviewer读取applet的HTML文件并在一个窗口中运行它们。,8.1.2 Ap
3、plet与浏览器,虽然Applet可以在appletviewer中进行查看,但随着Java的发展,越来越多的网页使用到Applet。虽然允许在Web浏览器中查看Applet。但是目前有多种浏览器版本,有的只支持Java 1.0,有的只支持Java1.1,很少有支持Java 2.0平台的。而且,由于历史原因,在页面中嵌入Applet产生了几种相互不兼容的方式,不同的浏览器、乃至同一个浏览器的不同版本,支持的标签都不完全相同。,8.1.3 显示Applet,Applet是一种特殊的Java程序,它不能独立运行。编译器将Applet源程序编译成Java字节码(Byte-Code)后,在网页中加载的是
4、Java字节码。在网络上如果查看包含Java字节码的网页,则Web服务器将编译好的Java字节码送至客户端的浏览器中执行,,8.1.4 Applet生命周期,Applet的生命周期相对于Application而言较为复杂。在其生命周期中涉及到Applet类的4个方法(也被JApplet类继承):init()、start()、stop()和destroy()。Applet的生命周期中有4个状态:初始态、运行态、停止态和消亡态。当程序执行完init()方法以后,Applet程序就进入了初始态;然后马上执行start()方法,Applet程序进入运行态;当Applet程序所在的浏览器图标化或者转入其
5、他页面时,该Applet程序马上执行stop()方法,Applet程序进入停止态;在停止态中,如果浏览器又重新装载该Applet程序所在的页面,或者浏览器从图标中复原,则Applet程序马上调用start()方法,进入运行态;当然,在停止态时,如果浏览器关闭,则Applet程序调用destroy()方法,进入消亡态。,8.2 Applet类API,在Applet类中可以实现绘图等功能,这些都与Applet所继承的类有关。在这个继承体系中,Applet的直接父类Panel是最简单的容器类,Panel的直接父类Container是一个一般的容器类,Container的直接父类Component是一
6、个具有图形表示能力的类,其对象可在屏幕上显示,并可与用户进行交互。Applet类的主要方法有init()、start()、paint()、repaint()、stop()和destroy()。,8.3 Applet的HTML标记和属性,由于Applet是需要嵌入在HTML中运行的,所以Applet的调试和运行都必须和HTML进行协作。而HTML是超文本标记语言,它通过各种各样的标记来显示、编排超文本信息。在HTML中嵌入Applet同样需要一组约定的特殊标记,8.3.1 定位属性,定位属性只指定Applet位置的属性,包含WIDTH、HEIGHT和ALIGN。WIDTH和HEIGHT:这2个属
7、性为必须的,它们定义Applet的大小,均以像素为单位,使用浏览器查看Applet时,该数据为Applet的初始大小。ALIGN:该属性定义了Applet的对齐方式。,8.3.2 编码属性,编码属性用来告诉浏览器如何定位Applet的代码,包含code、codebase和archive。1Code:该属性为必需的属性。它告诉浏览器这个Applet需要用的类文件名,如Myclass.class。该属性需要与下面提到的codebase进行区别。code属性是类名称,但不是相对于codebase(代码库)。如果没有指定codebase,则该属性指明的类名相当对当前页面。如果类在包中,则该属性应标明相
8、对于页面文件的位置,如chapter08/sample8_ 1/Sample8_1.class。也许该类中还调用了其他的类,Applet在运行时会根据code属性值自动调用与该类相关的类。,8.3.2 编码属性,2codebase该属性为可选属性,用来指明类文件的URL。如果文件Myclass.class位于chapter08/sample8_1/中,而页面文件位于与chapter08相同的目录中,则可以使用下面的标记:,8.3.2 编码属性,3archive该属性为可选属性。标明Java存档文件、包、包含类文件和类相关的其他文件(即JAR文件)。JAR文件使用逗号隔开,例如:,8.3.2 编
9、码属性,4object该属性用来指定序列化的Applet对象文件的名字,显示Applet时对象从文件中反序列化,该属性非常特殊尽量不要使用该属性。,8.3.2 编码属性,5name就像每个人都有自己的名字一样。每个Applet也有自己的名字,这个属性指明Applet的名字。这样同一页面中的Applet或者JavaScript都可以调用该Applet,该属性为可选属性。,8.4 创建Applet,使用Applet的HTML文件,由支持Java的网页浏览器下载运行。也可以通过Java开发工具中的appletviewer来运行。在编写新的Apple程序时,可以分为带参数Applet和不带参数Appl
10、et,即Applet程序是否向浏览器传递参数。本节将详细讲述Applet的创建过程。,8.4.1 简单Applet,简单Applet即不向浏览器传递参数的Applet。对于所有的Applet来说,其目标是创建与用户交互的界面,所以Applet需要创建GUI组件,完成图像、动画输入等任务。创建Applet一般包含如下的步骤。(1)引入需要的类。(2)定义Applet的主类,该类继承Applet类。(3)重载Applet类中的方法。(4)其他方法。(5)将Applet类添加至HTML代码中。,8.4.2 向Applet传递参数,如果Applet需要参数,则编写时比上一节的简单Applet稍微复杂一
11、些。因为在Java Application中,都是通过命令行向main()方法传递参数。但是在Applet中是没有main()方法的。但是在Applet中,可以在HTML中使用标记定义参数,格式如下所示。,8.5 Applet与Application,在本章之前的Java程序,一般都具有一样的特征:包含main()方法。当类中包含main()方法时,才可以运行,这样的程序称之为应用(Application)。应用程序与本章中所谈到的Applet程序是有一定区别的。应用程序可以使用java命令运行。而Applet需要嵌入到HTML页面中,利用appletviewer命令在appletviewer
12、中显示。那么既然应用程序和Applet程序都由Java语言编写,那么能不能将两者整合,使程序既是Applet程序,又是应用程序呢?为了达到这样的目的,首先看二者的区别在哪里。,8.6 Applet弹出窗口,Applet在浏览器的显示区域内显示的范围是有限的,但是可以利用弹出窗口改善这一状况。利用Applet的定位属性,可以使Applet不受Web页面的限制。,8.7 Applet安全,为了防止恶意的攻击,Java使用安全浏览器管理系统资源的访问控制。而Applet也在安全管理器的监控之下,每个Applet都不允许访问本地的资源,除非安全管理器进行授权。本节将介绍Applet的安全控制与沙箱模型
13、。,8.7.1 Applet安全控制,在安全管理器的监视下,浏览器对Applet进行了一些限制。(1)小应用程序绝不能运行任何一个本地可执行程序。(2)除了下载它的服务器外,小应用程序不能和任何一台主机通信。(3)Applet不能读写本地计算机的文件系统。(4)除了所用的 Java 版本号、操作系统名或版本号、用于分隔文件的字符(比如/或)、分隔路径的字符(如:或;)以及行分隔符(如 n 或 rn)之外,Applet找不到与本地计算机有关的任何信息。特别是,小应用程序找不到用户名、电子邮件地址等。(5)一个小应用程序弹出的所有窗口都会发出一条警告消息。,8.7.2 Applet沙箱,Java提
14、供的安全模型即沙箱模型。沙箱是Java编程语言和开发环境中的程序区及规则,程序员建立当作网页发送的Java代码(Applet)时需要使用它。由于Applet自动当作一部分网页发送,并且一到达就运行,如果它允许无限制访问内存和操作系统,那么Applet就很容易偶然或故意制造损害。沙箱的限制对Applet可能请求或访问的系统资源提供了严格限制。实际上,程序员必须编写只在沙箱内作用的代码。可把沙箱想象成计算机内Applet代码可自由作用的一小块区域。,8.8 实例研究:显示动画,动画是Java Applet最吸引人的特性之一。如果不用图像,用Java实现动画的原理就与放映动画片相似:在短时间内快速地
15、顺序显示图片。显示动画的原理与显示图片类似,可以使用Graphics类中的drawImage()方法显示图片。因为GIF被分解为多个文件,所以只要顺序显示文件即可达到动画的效果。可以使用repaint()方法不断让Applet显示新的图片。本小节将介绍在Java中编写动画的原理,还将介绍关于画布重新绘制的问题。,8.8.1 动画原理及重新绘制,1编写动画的原理动画程序其实不难,只要让程序根据一定的规则不断地对画布进行重新绘制即可。一般的实现策略是,将绘制的规则编写到paint()方法中,定时让paint()方法重新绘制画布即可。2重新绘制前面介绍动画编写的原理时,涉及到了使用paint()方法
16、进行重绘的问题。要特别注意的是,不能直接调用paint()方法进行重绘,而应该调用画布的repaint()方法请求系统执行paint()方法进行重绘。,8.8.2 Timer类简介,开发动画时经常需要定时执行指定的任务,可以自己开发一个线程来实现。如果任务很简单,自己开发线程就不是很合算。为了简化开发,Swing中专门提供了一个用来定时执行任务的类javax.swing.Timer。使用Timer类来开发定时执行指定任务的类非常简单,该类仅提供了一个构造器,声明如下。public Timer(int delay,ActionListener listener)参数delay为指定的初始延迟和动作事件间延迟的毫秒数。参数listener为指定的初始监听器,可以为null。,8.9 小 结,Applet能够带来更丰富的显示效果。本章介绍了如何创建Applet,Applet的相关属性及安全机制。通过本章的学习,可以结合Java的GUI编程,创建出更好的Applet程序。,