观看框架方法的实际运作是相当有趣的这个例子只使用init,start和stop,因为paint和destroy非常简单,很容易就能掌握。下面的程序片将跟踪这些方法调用的次数,并用paint将其显示出来:
//: applet3.java
// Shows init(), start() and stop() activities
import java.awt.*;
import java.applet.*;
public class Applet3 extends Applet {
String s;
int inits = 0;
int starts = 0;
int stoPS = 0;
public void init() { inits++; }
public void start() { starts++; }
public void stop() { stops++; }
public void paint(Graphics g) {
s = "inits: " + inits +
", starts: " + starts +
", stops: " + stops;
g.drawString(s, 10, 10);
}
} ///:~
正常情况下,当我们过载一个方法时,需检查自己是否需要调用方法的基础类版本,这是十分重要的。例如,使用init()时可能需要调用super.init()。然而,Applet文档特别指出init()、start()和stop()在Applet中没有用处,所以这里不需要调用它们。
试验这个程序片时,会发现假如最小化web浏览器,或者用另一个窗口将其覆盖,那么就不能再调用stop()和start()(这一行为会随着不同的实现方案变化;可考虑将Web浏览器的行为同程序片观察器的行为对照一下)。调用唯一发生的场合是在我们转移到一个不同的Web页,然后返回包含了程序片的那个页时。
¥29.00
¥299.00
¥399.00
¥498.00