Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的一种Java类,必须在支持JAVA的浏览器页面中运行,也可以使用J2SDK提供的Appletviewer程序来浏览结果。
Applet的工作原理:
1.class和HTML保存在服务器
2当浏览器向服务器请求时下载嵌入了Applet的HTML文件。
3下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。
4利用浏览器本身拥有的Java解释器执行该字节码。
一、HTML标记格式
加载applet的HTML标记<applet>和<applet>标记的语法如下:
<applet
code=classfilename.class
width=applet_viewing_width_in_pixels
height=applet_viewing_height_in_pixels
[codebase=applet_url]
[alt=alternative_text]
[name=applet_name]
[vspace=vertical_margin]
[hspace=horizontal_margin]
[align=applet_alignment]
[archive=archivefile]
>
<paramname=param_name_1value=param_value_1>
<paramname=param_name_2value=param_value_2>
…
<paramname=param_name_nvalue=param_value_n>
//使用param标志在HTML中设置参数,Applet可以通过getParameter(参数)访问他们
</applet>
属性code、width和height是必须的,分别指定了applet程序的类文件、可视区域的宽度和高度,各属性的含义如下:
(1)code:用来指定包含applet字节码的.class文件。默认情况下,Web浏览器假定已编译的字节码文件和HTML文档在同一文件夹中,也可以使用codebase属性来指定一个不同的文件夹。
(2)width:设置applet中可视区域的宽度,以像素为单位。
(3)height:设置applet中可视区域的高度,以像素为单位。
(4)codebase:用来设置Web浏览器所寻找的applet字节码文件的路径。例如,可以使用codebase属性值的“..”来指定包的父文件夹。
(5)alt:用于Web浏览器识别<applet>标记而不下载或运行applet的时候。此时,applet不显示,仅以纯文本的方式显示alt属性值。典型的应用是使用该属性值来通知用户网页中包含一个不可见的applet。
(6)name:用来设置applet的名称。如果HTML文档中有多个applet,可以通过该属性让它们之间彼此通信。另外,在JavaScript语句中也可以使用指定名称的applet。
(7)vspace:设置applet上下边框的宽度,以像素为单位。Web浏览器会在applet的可视区域周围预留相应大小的空白区域。
(8)hspace:设置applet左右边框的宽度,以像素为单位。用法同上。
(9)align:该属性取值范围为left|right|top|texttop|middle|absmiddle|baseline|bottom|absbottom,用来设置当applet可视区域小于HTML的屏幕区域时,applet的对齐方式。如果applet可视区域超过屏幕区域时,则applet会自行进行剪切。
(10)archive:用来设置含有applet文件的Java存档文件(.jar)。该属性值是一个URL,通常表示一个.jar文件或.zip文件的路径,一个.jar文件包含了applet使用的所有.class文件和其他文件。可以减少装载时间,改进执行效率。
二、主要方法
init()完成初始化
start()启动主线程运行init()方法结束后执行
paint(Graphicsg)绘制
stop()暂停执行主线程
destroy()Applet对象销毁时由浏览器虚拟机自动调用,释放资源
update()刷新重绘时执行,先清楚Applet画面,然后调用paint(),如果不希望清楚画面,可以重写此方法,直接调用paint()
paint()和update()都是从Applet祖先类Container(容器)中继承的方法
repaint()/repaint(intx,inty,intwidth,intheight)从Applet祖先类Component(部件)继承
无参调用形式是对整个Applet区域重画,自动调用update()方法
applet的初始化与终止的方法图示:
三、Applet绘图
paint(Graphicsg)方法
显露处理自动地发生,且导致对paint()方法的一次调用。一种Graphics类的被称为裁剪矩形的设备常用于对paint()方法进行优化。
repaint()方法
对repaint()的调用可通知系统:你想改变显示。repaint()实际上产生了一个调用另一方法update()的AWT线程。
update(Graphicsg)方法
update方法通常清除当前的显示并调用paint()。update()方法可以被修改,如:为了减少闪烁可不清除显示而直接调用paint()。
四、Applet代码中读取Applet参数值
Strings=getParameter("x1");
方法getParameter()搜索匹配的名称,并将与之相关的值以字符串的形式返回。如果这个参数名称在位于<applet></applet>标记对中的任何<param>标记中都未找到,则getParameter()返回null。参数的类型都是String。如果你需要其他类型的参数,则必须自己做一些转换处理。例如,读取应为int类型的参数,
intx1=Integer.parseInt(getParameter("x1"));
由于HTML的本性,参数名称对大小写不敏感;但是,使它们全部为大写或小写是一种良好的风格。如果参数值的字符串中含有空格,则应把整个字符串放入双引号中。值的字符串对大小写敏感;不论是否使用双引号,它们的大小写都保持不变。
五、Applet多媒体支持
1、图象获取
publicImagegetImage(URL,String)
publicImagegetImage(URL)
//其中URL为绝对地址
getCodeBase()//返回Applet字节码文件的URL地址
getDocumentBase()//返回html文件的URL地址
2、图象绘制
publicvoiddrawImage(Image,x,y,imageObserver)//最后一个参数为观察者,一般为this
3、利用双缓冲区绘图
建立图形缓冲区
Imageimg=createImage(300,300);
Graphicsg=img.getGraphics();//得到该缓冲区的Graphics对象
4、播放声音文件
利用Applet类的play()方法直接播放
play(URL,String)
play(URL)
使用AudioClip接口
接口方法:
publicvoidplay();//从头开始播放一个声音文件
publicvoidloop();//循环播放当前声音文件
publicvoidstop();//停止播放当前声音文件
使用getAudioClip()或者newAudioClip()获取AudioClip类型对象,后者为静态方法
AudioClipac=getAudioClip(getCodeBase(),"sloop.au");
六、调用存档文件
<appletcode="myclass.class"archive="resource.jar"width=height=>
</applet>
<objectcode="myclass.class"width=height=>
<paramname="archive"value="resource.jar">
</object>