一、Applet
Applet也叫小应用程序,是一种在浏览器环境下运行的java程序。
在运行Applet时,必须先创建一个HTML文件,在该文件中通过<applet>标记制定要运行的Applet程序名,然后将该HTML文件的URL通知浏览器,最后通过浏览器装入并运行该Applet程序。
为了编写Applet,必须以下面的形式创建一个类:
import JAVA.applet.*;
public class AppletName extends Applet{
……
}
首先,这个类必须是public类型的,因此,程序文件的文件名必须与类名保持一致。其次,这个类必须是java.awt.Applet类的子类。
在默认的情况下,Applet使用FlowLayout布局管理器。
Applet从构造方法开始执行程序,在构造方法执行结束后,浏览器调用Applet的init()方法,该方法完成Applet的初始化操作,在init()方法执行结束后,浏览器又调用一个名为start()的方法。
不论是init()方法还是start()方法,他们都是在Applet被激活之前执行的,因此不能用它们来实现Applet的功能。在Applet中,没有任何一个方法在程序的生命周期内自始至终一直运行。
通常在图形环境下,使用Applet的paint()方法绘制要显示的内容,在浏览器中,每当Applet显示内容需要刷新时,paint()方法都会被调用。paint()方法还需要一个java.awt.Graphics类的实例作为参数,利用这个参数可以向Applet显示区域绘制文本信息或图形。
import java.awt.*;
import java.applet.*;
public class HelloWord extends Applet{
public void paint(Graphics g){
g.drawString("Hello Word!",25,25);
}
}
二、Applet与生命周期有关的方法
Applet的生命周期比较复杂,与此相关的方法主要有四个,分别是init(),start(),stop()和
destroy()。
(1)init方法
当Applet对象被创建并被初次装入支持java的浏览器时,init()方法会被调用。init()方法通常用于完成Applet的数据初始化操作。并非每次打开包含Applet的浏览窗口都要调用init()方法,只有一次这样做。
(2)start()方法
init()方法执行结束后,start()方法紧接着被调用。当包含Applet的浏览窗口最小化之后再次恢复调用,或者从浏览器的另一个窗口回包含Applet的窗口时,start()方法也会被调用。start()方法通常用于完成诸如启动动画或音乐之类的操作。如
public void start(){
musicClip.play();
}
(3)stop()方法
public void stop){
musicClip.stop();
}
(4)destroy()方法
当浏览器终止Applet时,destroy()方法被调用。
三、Applet的显示与刷新
Applet的显示与刷新由一个独立线程控制,称为AWT线程。Applet的显示与刷新的方法有paint()、repaint()和updata()方法。
四、HTML与<applet>标记
Applet必须通过<applet>标记嵌入到一个HTML文件中,然后由浏览器解释执行。
<applet>标记的语法:
<applet
code = appletFile.class
width = pixels height = pixels
[codebase = codebaseURL]
[alt = alternateText]
[name = appletInstanceName]
[align = alignment]
[vspace = pixels] [hspace = pixels]
>
[<param name = appletAttribute1 value = value>]
[<param name = appletAttribute2 value = value>]
……
</applet>
(1)code = appletFile.class
必选项,指定需要运行的Applet的文件名,该文件名也可以使用aPackage.AppletFile.class的形式。注意文件名前面不能有路经,默认情况下,浏览器到HTML文件所在的服务器目录中寻找该Applet文件,即浏览器认为该Applet文件使用与HTML文件相同的URL。如果想要改变Applet文件默认的URL,需要使用后面的codebase。
(2)width = pixels height = pixels
必选项,指定Applet显示区域的初始宽度和高度(用像素表示)。
(3)codebase = codebaseURL
可选项,为Applet文件制定URL。
(4)alt = alternateText
可选项,指定一段可替换文本,当浏览器能理解<applet>标记但不能运行Applet程序时,这段文本可以作为提示显示出来。
(5)name = appletInstanceName
可选项,为Applet制定一个名字,使得在同一浏览器窗口中运行的其他Applet能够识别该Applet并可与之通信。
(6)align = alignment
可选项,指定Applet的对齐方式,可取值为left,right,top,texttop,middle,absmiddle,baseline,bottom和absbottom。
(7)vspace = pixels hspace = pixel
可选项,指定Applet与周围文本的垂直间距和水平间距(用像素表示)。
(8)param name = appletAttribute1 value = value
可选项,为Applet指定参数(包含参数的名称和数值)。在Applet中可通过getParameter()方法得到相应的参数。
五、Applet参数的读取
在HTML文件中,可以通过<applet>中<param>标记为Applet制定参数。
六、Applet与URL
在java.net包中定义了一个URL类,该类用于描述网络上某一资源的地址。Applet类中有两个方法可以返回URL对象:
(1)getDocumentBase()
返回当前Applet所在的HTML文件的URL。例如:
URL myPage = getDocumentBase();
(2)getCodeBase()
返回当前Applet的URL。除非在<applet>标记中指定了codebase,否则这个URL与HTML文件的URL是一致的。例如:
URL AppletURL = getCodeBase();
通过URL对象,可以将声音或者图像加入Applet中。
七、在Applet中显示图像
在Applet中进行图像的显示时,通常是首先使用Applet类的getImage()方法装载一个Image对象,然后使用Graphics类中的drawImage()方法将该对象画到屏幕上。
Applet类的getImage()方法有两种形式:
public Image getImage(URL String name)
public Image getImage(URL url)
在第一种形式中,url是路经,name是图像文件名。在第二种形式中,url直接包含了路经和文件名。
八、在Applet中播放声音
该方法有两种形式:
(1)public void play(URL url)
(2)public void play(URL url,String name)
通常play()方法中的URL参数就是HTML文件的URL,因此可以通过getDocumentBase()方法取得,例如:
play(getDocumentBase(),"bark.au")
这条命令用于制定播放HTML文件处于同一服务器目录的bark.au文件。
除了上面的方法播放声音职务ia,还可以先将声音对象装入内存,然后进行播放。采用这种方式播放声音时,需要使用java.applet.AudioClip中的方法,因此事先需要取得一个AudioClip声音对象。
(1)AudioClip声音对象
使用java.applet.Applet类的getAudioClip()方法可以获得AudioClip声音对象。该方法有两种形式:
public AudioClip getAudioClip(URL url)
public AudioClip getAudioClip(URL url,String name)
(2)播放,有两种方法
sound.play();
sound.loop();/用于循环播放
(3)停止播放
sound.stop();