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 ]
>
<param name = param_name_1 value = param_value_1>
<param name = param_name_2 value = param_value_2>
…
<param name = param_name_n value = 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(Graphics g)绘制
stop()暂停执行主线程
destroy()Applet对象销毁时由浏览器虚拟机自动调用,释放资源
update() 刷新重绘时执行,先清楚Applet画面,然后调用paint(),如果不希望清楚画面,可以重写此方法,直接调用paint()
paint()和update()都是从Applet祖先类Container(容器)中继承的方法
repaint()/repaint(int x,int y,int width,int height) 从Applet祖先类Component(部件) 继承
无参调用形式是对整个Applet区域重画,自动调用update()方法
applet的初始化与终止的方法图示:
三 、Applet绘图
paint(Graphics g)方法
显露处理自动地发生,且导致对paint( )方法的一次调用。一种Graphics类的被称为裁剪矩形的设备常用于对paint ()方法进行优化。
repaint( )方法
对repaint( )的调用可通知系统:你想改变显示。repaint( )实际上产生了一个调用另一方法update( )的AWT线程。
update(Graphics g)方法
update方法通常清除当前的显示并调用paint( )。update( )方法可以被修改,如:为了减少闪烁可不清除显示而直接调用paint( )。
四、Applet代码中读取Applet参数值
String s=getParameter("x1");
方法getParameter()搜索匹配的名称,并将与之相关的值以字符串的形式返回。如果这个参数名称在位于<applet></applet>标记对中的任何<param>标记中都未找到,则getParameter()返回null。参数的类型都是String。如果你需要其他类型的参数,则必须自己做一些转换处理。例如,读取应为int类型的参数,
int x1= Integer.parseInt(getParameter( " x1 " ));
由于HTML的本性,参数名称对大小写不敏感;但是,使它们全部为大写或小写是一种良好的风格。如果参数值的字符串中含有空格,则应把整个字符串放入双引号中。值的字符串对大小写敏感;不论是否使用双引号,它们的大小写都保持不变。
五、Applet多媒体支持
1、图象获取
public Image getImage(URL,String)
public Image getImage(URL)
//其中URL为绝对地址
getCodeBase()//返回Applet字节码文件的URL地址
getDocumentBase()//返回html文件的URL地址
2、图象绘制
public void drawImage(Image,x,y,imageObserver)//最后一个参数为观察者,一般为this
3、利用双缓冲区绘图
建立图形缓冲区
Image img=createImage(300,300);
Graphics g=img.getGraphics();//得到该缓冲区的Graphics对象
4、播放声音文件
利用Applet类的play()方法直接播放
play(URL,String)
play(URL)
使用AudioClip接口
接口方法:
public void play();//从头开始播放一个声音文件
public void loop();//循环播放当前声音文件
public void stop();//停止播放当前声音文件
使用getAudioClip()或者newAudioClip()获取AudioClip类型对象,后者为静态方法
AudioClip ac=getAudioClip(getCodeBase(),"sloop.au");
六、调用存档文件
<applet code="myclass.class" archive="resource.jar" width= height=>
</applet>
<object code="myclass.class" width= height=>
<param name="archive" value="resource.jar">
</object>