"是init()在小应用程序载入后仅执行一次,destroy()在关闭浏览器时执行一次"
书上说的没错。
“back、forward离开时又总是先调用stop()接着调用destroy(),”是小应用程序被重新载入了。
一些页面连接例如<A>或者前进,回退,IE都会调用load,unload之类的事件,Applet会被重新加载,卸载。

解决方案 »

  1.   

    up.
    "destroy()仅在关闭浏览器时执行一次“这句话肯定是错的啦。
      

  2.   

    进入带有applet的页面时,执行init()、start();
    当页面被最小化时、或失去焦点时,执行stop();
    当页面恢复获得焦点时,执行start();
    当页面被终止(关闭浏览器、转到其它页面等),执行stop()、destory();
      

  3.   

    抄来抄去老掉牙的教材真是害死人,希望下面的例子有助于大家理解小应用程序的生命周期(浏览页面进行各种动作时,打开java控制台查看):
    import java.awt.*; 
    import java.applet.Applet; 
    public class AppletLife extends Applet{
     public static int colors=10; 
      Font font; 
      public void init() {
    System.out.println("Now init"); 
            font = new java.awt.Font("TimesRoman", Font.PLAIN, 36); 
           } 
      public void start() {
    System.out.println("Now start"); 
           } 
      public void stop() {
    System.out.println("Now stop"); 
      } 
      public void paint(Graphics g) {
     int red = (int)(Math.random() * 50); 
        int green = (int)(Math.random() * 50); 
        int blue = (int)(Math.random() * 256); 
        g.setFont(font); 
        g.setColor(new Color((red +colors * 30) % 256, (green + colors / 3) % 256, blue)); 
        colors=colors+10; 
    System.out.println("Now paint"); 
        g.drawString("hello",30,30); 
       } 
      public void destroy() {
    System.out.println("Now destroy"); 
        } 
    }
      

  4.   

    back和forward是有applet的页面的IE去了其他的页面,相当于不用appletle ,applet当然就destory了!然后又回来了,相当于重新加载applet,所以有init了
    只有applet还在IE上,你的鼠标点了其他的窗口,applet才知是stop,不destory!
    焦点回来后,applet就start了!
      

  5.   

    复习了一下,不错,upup,and upupag!