This mechanism can be used load first a small Applet with a quick loading time, display a message to the user and then load a larger Applet. The example below shows how to do this:

 [HTML (testQuick.html)

<HTML><HEAD></HEAD><BODY>
<APPLET CODE="QLoader.class" 
        NAME="QLoader"
        HEIGHT=200 
        WIDTH=200>
<PARAM NAME="appletToLoad" VALUE="SecondApplet">
<PARAM NAME="SecondAppletParm" VALUE="Hello World">
</APPLET></BODY></HTML>

[JAVA source (QLoader.java)]

import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.*;

public class QLoader extends Applet 
    implements Runnable, AppletStub {
  String appletToLoad;
  Thread appletThread;

  public void init() {
    appletToLoad = getParameter("appletToLoad");
    setBackground(Color.white);
    }

  public void paint(Graphics g) {
    g.drawString("Loading the BIG ONE ...", 30, 30);
    } 

  public void run() {
    try {
      Class appletClass = Class.forName(appletToLoad);
      Applet realApplet = (Applet)appletClass.newInstance();
      realApplet.setStub(this);
      setLayout( new GridLayout(1,0));
      add(realApplet);
      realApplet.init();
      realApplet.start();
      }
    catch (Exception e) {
      System.out.println( e );
      }
    validate();
    }

  public void start(){
    appletThread = new Thread(this);
    appletThread.start();
    }

  public void stop() {
    appletThread.stop();
    appletThread = null;
    }

  public void appletResize( int width, int height ){
    resize( width, height );
    }
}

[SecondApplet.java for demonstration]

import java.awt.*;

  public class SecondApplet extends java.applet.Applet {
    TextField tf;
    public void init() {
      System.out.println("Starting Second applet");
      String s;
      tf = new TextField( 10 );
      add( tf );
      s = getParameter("SecondAppletParm");
      tf.setText(s);
      }
    }