5.1 Applet的基本概念 5.2 Applet的编写 5.3 Applet的多媒体支持
学习提要 1.掌握Applet的基本概念和工作原理 2.掌握Applet类的设计与使用方法。
5.1 Applet的基本概念 Applet与Application的主要区别在于执行方式上: Applet是能够嵌入到HTML页面中并能够在浏览器中运行的Java类。 Applet与Application的主要区别在于执行方式上: Application以mian()方法为入口点运行; Applet必须在浏览器或者appletViewer中运行,运行过程比Application复杂。
5.1.1 Applet的基本工作原理 Java Applet是通过兼容Java的Internet浏览器来解释执行的。 编译好的Java字节码文件保存在特定的WWW服务器上,当浏览器遇到网页中嵌入的<applet>标记时,就会根据该Applet的名字和位置自动把字节码从服务器上下载到本地,并利用浏览器本身拥有的Java解释器直接执行该字节码。 由于有浏览器的支持,Applet不需要建立自己的主流程框架,也不需要有专门的图形界面。Applet需要做的是接收和响应浏览器发来的消息或事件。
Applet类: 它是Java类库中一个重要的系统类,存在于java.applet包中。Applet类是Java的系统类java.awt.Panel的子类,Applet在Panel基础上,还具有一些与浏览器和Applet生命周期有关的专门方法。
5.1.2 Applet的生命周期 destroy( )消亡 init()初始化 start()启动 stop()中止 退出浏览器 Applet转入后台 重新激活Applet
5.1.3 Applet类的主要方法 (1)init()方法 用来完成主类实例的初始化工作。如:创建和初始化程序运行所需要的对象实例,把图形或字体加载入内存,设置各种参数,加载图形和声音并播放等。
(2)start()方法 用来启动浏览器运行Applet的主线程。浏览器在调用init()方法初始化Applet类的实例之后,接着会自动调用start()方法,除此之外,start()方法在Applet被重新启动时也会被系统自动调用。 (3)stop()方法 类似于start()方法的逆操作,当用户浏览其它页面,或切换到其他系统应用时,浏览器将自动调用stop()方法暂停执行Applet的主线程。
(4)paint()方法 主要用来在Applet的界面中显示文字、图形和其他界面元素,也是浏览器自动调用的方法。导致浏览器调用paint()方法的事件主要有三种: Applet被启动后,自动调用paint()来重新描绘自己的界面; Applet所在的浏览器窗口改变时,要求自动调用paint()来重画界面; Applet的其他方法被调用时,系统也会调用此方法。 paint()方法有一个固定的参数——Graphics类的对象g。 Graphics类是用来完成一些较低级的图形用户界面操作的类,其中包括画圆、点、线、多边形及显示简单文本。
(5)destroy()方法 当用户退出浏览器时,浏览器自动调用Applet 实例的destroy()方法完成释放资源、关闭连接之类的操作。
5.2 Applet的编写 设计步骤: 引入需要的类和包 如:import java.applet.*; import java.awt.*; 2. 声明一个Applet类的子类 用AWT组件时:extends Applet 用 Swing组件时:extends Japplet 3. 实现Applet类的某些方法 每个Applet类必须至少实现init()、start()、paint()中的一个方法。 Applet中事件响应 与Application相同 其默认布局是 BorderLayout
4. 将Applet嵌入在HTML页面中运行 Applet通过标记<APPLET> </APPLET>嵌入在HTML文件中, <APPLET> 至少需要包括三个参数:code、height、width。其它可选参数如下: (1)codebase 当Applet字节码文件的保存位置与所嵌入的HTML文档不同时,需要用此参数指明字节码文件的位置,该位置用URL格式表示。 (2)alt 如果浏览器不包含Java解释器,则不能执行字节码文件,此时可用alt参数告诉用户此浏览器不支持Java。 (3)align 表示Applet界面区域在浏览器窗口中的对齐方式。
HTML文件可以通过标记<PARAM>向它所嵌入的Applet传递参数,使Applet的运行更加灵活。 格式为: <PARAM name=x value=“这是一个字符串参数”> <PARAM>标记只能传递一个字符串类型的参数。 Applet利用getParamter()方法来获取HTML传递来的参数,方法中用name指定的参数名。 格式: getParamter(” x ”)
例:MyAppletparam.java import java.applet.Applet ; import java.awt.Graphics ; public class MyAppletParam extends Applet //定义主类 { private String s = "" ; //用于接收HTML参数的程序变量 private int x ; private int y ; public void init ( ) s = getParameter ( "vstring" ) ; //接收HMTL中传递的参数 x = Integer.parseInt ( getParameter ( "x" ) ) ; y = Integer.parseInt ( getParameter ( "y" ) ) ; } public void paint ( Graphics g ) if(s != null) g.drawString (s,x,y); ************************ <HTML> <BODY> <APPLET code = "MyAppletParam.class" height=200 width = 300> <PARAM name = vstring value = "我是来自HTML的参数"> <PARAM name = x value = 50> <PARAM name = y value = 100> </APPLET> </BODY></HTML>
5.3 Applet的多媒体支持 5.3.1 图象文件的处理 1. 图象文件的装载 Java目前所支持的图象文件格式有多种: 1. 图象文件的装载 Java目前所支持的图象文件格式有多种: 如:GIF 和 JPEG 、 PNG (文件扩展名分别为.gif .jpg .jpeg .png ) Java提供了java.awt.Image类来管理与图象文件有关的信息,操作图象时需要加载此类。 Applet类中提供了getImage()方法将图象装载到applet中,采用URL来定位图象文件的网络位置。
URL类 URL有两种形式: 绝对URL:http://210.28.32.169/sjweb/picture/pic.gif 相对URL= picture/pic.gif 基准URL具有更大灵活性 getImage( )方法 有两种调用形式: Image img=getImage( URL url)——用的是绝对URL Image img=getImage( URL url,String name)—— 前面url用的是基准URL,后面name是路径和文件名(即上面的相对URL) 可以用getDocumentBase( ) 或getCodeBase( )方法获得基准 URL
用Graphics类的drawImage()方法可以将图象显示在屏幕的特定位置。 按原样输出图象: 2. 图象文件的显示 用Graphics类的drawImage()方法可以将图象显示在屏幕的特定位置。 按原样输出图象: drawImage(Image img, int x, int y, ImageObserver observer) 按给定尺寸输出图象: drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) 其中ImageObserver接口用来跟踪图象文件是否装载完毕,一般都设置为this,即传递本对象的引用去实现这个接口。 x, y表示图象左上角位置, width 和height图象的宽度和高度。
5.3.2 声音文件的播放 Applet类的play()方法 Java目前支持的声音文件格式有很多种,早期的有:AUL(.aul,也称 u-law格式)、AIFF、WAV和三种MIDI格式文件(MIDI文件类型0 、MIDI文件类型1、RMF)。 Applet类的play()方法 可以将声音的加载与播放一并完成 (只能将声音文件播放一遍) ,调用格式为: 格式1: void play(URL url) 格式2: void play(URL url, String name) 例:当声音文件与applet文件存放在同一个文件夹中时:play(getCodeBase( ),”five.mid”)