Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()
init()方法
这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。
start()方法
系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可以在start()方法中开始一个线程,如继续一个动画、声音等。
stop()方法
这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。
destroy()方法
与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy()方法中一般可以要求收回占用的非内存独立资源。(如果在Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。
import java.applet.Applet;
import java.awt.Graphics;
import netscape.javascript.JSObject;
public class jsApplet extends Applet {
static int staticVar=0;//静态变量
int globalVar = 100; //全局变量
public jsApplet() {
super();
System.out.print("初始Applet!");
System.out.println("\tstaticVar = " + staticVar + "; globalVar = " + globalVar);
}
public void init() {
System.out.print("启动Applet!");
staticVar++;globalVar++;
System.out.println("\tstaticVar = " + staticVar + "; globalVar = " + globalVar);
System.out.println(getParameter("p0") + " : " + getParameter("p1")); }
public void start() {
System.out.print("运行Applet!");
staticVar++;globalVar++;
System.out.println("\tstaticVar = " + staticVar + "; globalVar = " + globalVar);
}
public void stop() {
System.out.print("停止Applet!");
staticVar++;globalVar++;
System.out.println("\tstaticVar = " + staticVar + "; globalVar = " + globalVar);
}
public void destroy() {
System.out.print("摧毁Applet!");
staticVar++;globalVar++;
System.out.println("\tstaticVar = " + staticVar + "; globalVar = " + globalVar);
}
public String getAppletInfo() {
return "This is my default applet created by Eclipse";
}
public void paint(Graphics g){
System.out.println("绘画Applet!");
g.drawString( "绘画Applet!" , 10, 40);
}
public void setParameter(String name, String value){
System.out.println("[" + name + "] = " + value );
}
}
启动Applet==========
初始Applet! staticVar = 0; globalVar = 100
启动Applet! staticVar = 1; globalVar = 101
null : null
运行Applet! staticVar = 2; globalVar = 102
绘画Applet!
=====如果点击其他的运行程序,然后回复到applet窗口,则会再次执行“绘画Applet!”;
如果最小化并且还原Applet,则会启动它的stop和start方法========
初始Applet! staticVar = 0; globalVar = 100
启动Applet! staticVar = 1; globalVar = 101
null : null
运行Applet! staticVar = 2; globalVar = 102
绘画Applet!
绘画Applet!
停止Applet! staticVar = 3; globalVar = 103
运行Applet! staticVar = 4; globalVar = 104
绘画Applet!
======
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My applet 'jsApplet' starting page</title>
</head>
<body>
<script type="text/javascript">
//This part is before the Applet init!
//document.jsApplet.setParameter("Timer","beforeStart");
</script>
<applet codebase="applet/"
code="jsApplet.class"
name="jsApplet"
id="jsApplet"
width="320"
align="top"
height="240"
vspace="50"
hspace="50"
alt="无法运行时显示此对话框"
MAYSCRIPT>
<param name="p0" value="name">
<param name="p1" value="Applet">
</applet>
<script type="text/javascript">
document.jsApplet.setParameter("Timer","afterEndApplet");
document.applets[0].setParameter("title2","jesseShen");
document.getElementByIdx_x("jsApplet").setParameter("title3","Siting");
document.getElementByIdx_x("jsApplet")["setParameter"]("title3","Siting");
</script>
</body>
</html>
IE控制台效果
初始Applet! staticVar = 0; globalVar = 100
启动Applet! staticVar = 1; globalVar = 101
name : Applet
运行Applet! staticVar = 2; globalVar = 102
绘画Applet!
[Timer] = afterEndApplet
[title2] = jesseShen
[title3] = Siting
[title3] = Siting
如果最小化并且还原applet后,再次出现“绘画Applet”;
如果关闭网页,则虚拟机关闭;
如果刷新网页,启动stop和destroy方法,并且重启开始init和start,静态变量和动态变量效果不同;
--------------------------------------------
绘画Applet!
停止Applet! staticVar = 3; globalVar = 103
摧毁Applet! staticVar = 4; globalVar = 104
初始Applet! staticVar = 4; globalVar = 100
启动Applet! staticVar = 5; globalVar = 101
name : Applet
绘画Applet!
运行Applet! staticVar = 6; globalVar = 102
[Timer] = afterEndApplet
[title2] = jesseShen
[title3] = Siting
[title3] = Siting
---------------------------------------
绘画Applet!
初始Applet! staticVar = 2; globalVar = 100
启动Applet! staticVar = 3; globalVar = 101
name : Applet
运行Applet! staticVar = 4; globalVar = 102
绘画Applet!
停止Applet! staticVar = 5; globalVar = 103
摧毁Applet! staticVar = 6; globalVar = 104
[Timer] = afterEndApplet
[title2] = jesseShen
[title3] = Siting
[title3] = Siting
这里的全局变量和静态变量效果相同,当关闭当前applet或者重启新applet,效果如前。