在本例子中,Applet开始执行后就不停的播放声音,如果浏览器图标化或者是转到其它页面,则声音停止播放;如果浏览器恢复正常或者是从其它页面跳回,则程序继续播放声音。
由于Applet程序要嵌入到HTML文件中才能够正常执行,下面介绍与Applet程序有关的HTML文件标记。
<applet>
[archive=archiveList] //同一个codebase中需预先下载的文件
code=appletFile.class //applet的名称
width=pixels height=pixels //applet的初始显示空间
[codebase=codebaseURL] //代码的地址
[alt=alternateText] //如果浏览器不支持applet时,显示的替代文本
[name=appletInstanceName]
//给该applet取名,用于同页面applet之间的通信
[align=alignment] //对齐方式,如left,right,top,baseline...
[vspace=pixels] [hspace=pixels] //预留的边缘空白
>
[<param name=appletAttribute1 value=value>]
[<param name=appletAttribute2 value=value>]
…… //参数名称及其值
[alternateHTML]
</applet>
注意:
1)不支持Java的浏览器会把<applet></applet>之间的普通HTML文档显示出来;支持Java的浏览器,则把其中的普通HTML文档忽略。
2)AppletViewer仅支持<applet> </applet>标记,其它标记不会被显示出来。
6.3.2 Applet的AWT绘制
Applet程序中所采用的AWT的绘图机制主要涉及三个方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一个Graphics类参数。Graphics是画图的关键,它可以支持两种绘图:一种是基本的绘图,如:画线、矩形、圆等;另一种是画图象,主要用于动画制作。
要进行绘图,首先要找到一个Graphics类的对象。update()方法和paint()方法所传递的参数都是Graphics类的对象,因此主要是通过重载它们来进行绘图,这是在动画程序中经常使用的方法。我们还可以通过getGraphics()方法得到一个Graphics类的对象,这个对象和update()方法和paint()方法中所传递的对象一样,都是该成员所对应的Graphics类的对象。得到了Graphics类的对象,就可使用各种绘图方法。
Graphics中提供的图形绘制方法有:
paint( ) //进行绘图的具体操作,必须有程序员重写
update( ) //用于更新图形,先清除背景、前景,再调用paint()
repaint( ) /*用于重绘图形,在组件外形发生变化,即大小改变或位置移动时,repaint( )方法立即被系统自动调用,而实际上repaint()方法是自动调用update()方法*/
6.3.3 Applet和浏览器间的通信
在Applet类中提供了许多方法,使之可以与浏览器进行通信。下面对这些方法进行简要的介绍:
一个Web页可包含一个以上的小应用程序。一个Web页中的多个小应用程序可以直接通过java.applet包中提供的方法进行通信。
getDocumentBase( ) //返回当前网页所在的URL
getCodeBase( ) //返回当前applet所在的URL
getImage(URL base,String target) //返回网址URL中名为target的图像
getAudioClip(URL base,String target)
//返回网址URL中名为target的声音对象
getParameter(String target ) //提取HTML文件中名为target的参数的值
同页Applet间的通信
在java.applet.Applet类中提供了如下方法得到当前运行页的环境上下文AppletContext对象。
public AppletContext getAppletContext();
通过AppletContext对象,可以得到当前小应用程序运行环境的信息。AppletContext是一个接口,其中定义了一些方法可以得到当前页的其它小应用程序,进而实现同页小应用程序之间的通信。
(1)得到当前运行页的环境上下文AppletContext对象
public AppletContext getAppletContext();
(2)取得名为name的Applet对象
public abstract Applet getApplet(String name);
(3)得到当前页中所有Applet对象
public abstract Enumeration getApplets();
【本讲小结】
本讲介绍了Java的线程和Java Applet的一些基本知识和简单应用,通过对线程简介,阐明了线程与进程的区别,通过描述线程的概念模型的基本原理以及线程体的构造方法和应用实例,讲解了线程的基本特性和线程的不同状态的转换关系和调用方法,明确了线程的使用方法,然后,我们又进一步讲述了线程的几种调度策略,在不同的调度策略下优先级的作用。以及如何进行基本的线程的控制,线程的重点和难点在于多线程的互斥与同步,首先我们必须明白互斥锁的概念和作用,如何使用互斥锁来控制和处理多线程的同步问题。
本讲的后半部分我们对Java Applet做了介绍和一些基本的应用的讲解,例如Applet的创建,生命周期和Applet的主要方法以及Applet的AWT绘制,最后简单介绍了Applet和浏览器间的通信的方法。