觀看框架方法的實際運作是相當有趣的(這個例子只使用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頁,然後返回包含了程序片的那個頁時。