Here is the Java source code:

//******************************************************************************
// pics.java:Applet
//
//******************************************************************************
import java.applet.*;
import java.awt.*;

//==============================================================================
// Main Class for applet pics
//
//==============================================================================
public class pics extends Applet implements Runnable
{
// THREAD SUPPORT:
//m_picsis the Thread object for the applet
//--------------------------------------------------------------------------
private Thread m_pics = null;

// ANIMATION SUPPORT:
//m_Graphicsused for storing the applet's Graphics context
//m_Images[]the array of Image objects for the animation
//m_nCurrImagethe index of the next image to be displayed
//m_ImgWidthwidth of each image
//m_ImgHeightheight of each image
//m_fAllLoadedindicates whether all images have been loaded
//NUM_IMAGES number of images used in the animation
//--------------------------------------------------------------------------
private Graphics m_Graphics;
private Image m_Images[];
private int  m_nCurrImage;
private int  m_nImgWidth  = 0;
private int  m_nImgHeight = 0;
private boolean  m_fAllLoaded = false;
private final int NUM_IMAGES = 4;

// pics Class Constructor
//--------------------------------------------------------------------------
public pics()
{
// TODO: Add constructor code here
}

// APPLET INFO SUPPORT:
//The getAppletInfo() method returns a string describing the applet's
// author, copyright date, or miscellaneous information.
    //--------------------------------------------------------------------------
public String getAppletInfo()
{
return "Name: pics\r\n" +
       "Author: Web Men Talking\r\n" +
       "Created with Microsoft Visual J++ Version 1.1";
}


// The init() method is called by the AWT when an applet is first loaded or
// reloaded.  Override this method to perform whatever initialization your
// applet needs, such as initializing data structures, loading images or
// fonts, creating frame windows, setting the layout manager, or adding UI
// components.
    //--------------------------------------------------------------------------
public void init()
{
        // If you use a ResourceWizard-generated "control creator" class to
        // arrange controls in your applet, you may want to call its
        // CreateControls() method from within this method. Remove the following
        // call to resize() before adding the call to CreateControls();
        // CreateControls() does its own resizing.
        //----------------------------------------------------------------------
    resize(62, 134);

// TODO: Place additional initialization code here
}

// Place additional applet clean up code here.  destroy() is called when
// when you applet is terminating and being unloaded.
//-------------------------------------------------------------------------
public void destroy()
{
// TODO: Place applet cleanup code here
}

    // ANIMATION SUPPORT:
    //Draws the next image, if all images are currently loaded
    //--------------------------------------------------------------------------
private void displayImage(Graphics g)
{
if (!m_fAllLoaded)
return;

// Draw Image in center of applet
//----------------------------------------------------------------------
g.drawImage(m_Images[m_nCurrImage],
   (size().width - m_nImgWidth)   / 2,
   (size().height - m_nImgHeight) / 2, null);
}

// pics Paint Handler
//--------------------------------------------------------------------------
public void paint(Graphics g)
{
// ANIMATION SUPPORT:
//The following code displays a status message until all the
// images are loaded. Then it calls displayImage to display the current
// image.
//----------------------------------------------------------------------
if (m_fAllLoaded)
{
Rectangle r = g.getClipRect();

g.clearRect(r.x, r.y, r.width, r.height);
displayImage(g);
}
else
g.drawString("Loading images...", 10, 20);

// TODO: Place additional applet Paint code here
}

//The start() method is called when the page containing the applet
// first appears on the screen. The AppletWizard's initial implementation
// of this method starts execution of the applet's thread.
//--------------------------------------------------------------------------
public void start()
{
if (m_pics == null)
{
m_pics = new Thread(this);
m_pics.start();
}
// TODO: Place additional applet start code here
}

//The stop() method is called when the page containing the applet is
// no longer on the screen. The AppletWizard's initial implementation of
// this method stops execution of the applet's thread.
//--------------------------------------------------------------------------
public void stop()
{
if (m_pics != null)
{
m_pics.stop();
m_pics = null;
}

// TODO: Place additional applet stop code here
}

// THREAD SUPPORT
//The run() method is called when the applet's thread is started. If
// your applet performs any ongoing activities without waiting for user
// input, the code for implementing that behavior typically goes here. For
// example, for an applet that performs animation, the run() method controls
// the display of images.
//--------------------------------------------------------------------------
public void run()
{
m_nCurrImage = 0;

// If re-entering the page, then the images have already been loaded.
// m_fAllLoaded == TRUE.
//----------------------------------------------------------------------
        if (!m_fAllLoaded)
{
    repaint();
    m_Graphics = getGraphics();
    m_Images   = new Image[NUM_IMAGES];

    // Load in all the images
    //------------------------------------------------------------------
    MediaTracker tracker = new MediaTracker(this);
    String strImage;

    // For each image in the animation, this method first constructs a
    // string containing the path to the image file; then it begins
    // loading the image into the m_Images array.  Note that the call to
    // getImage will return before the image is completely loaded.
    //------------------------------------------------------------------
    for (int i = 1; i <= NUM_IMAGES; i++)
    {
    // Build path to next image
    //--------------------------------------------------------------
                    strImage = "img" + i + ".gif";
    m_Images[i-1] = getImage(getDocumentBase(), strImage);

                tracker.addImage(m_Images[i-1], 0);
    }

    // Wait until all images are fully loaded
    //------------------------------------------------------------------
try
{
tracker.waitForAll();
m_fAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
// TODO: Place exception-handling code here in case an
//       InterruptedException is thrown by Thread.sleep(),
// meaning that another thread has interrupted this one
}

if (!m_fAllLoaded)
{
    stop();
    m_Graphics.drawString("Error loading images!", 10, 40);
    return;
}


// Assuming all images are same width and height.
//--------------------------------------------------------------
    m_nImgWidth  = m_Images[0].getWidth(this);
    m_nImgHeight = m_Images[0].getHeight(this);
        }
repaint();

while (true) {}
}

// MOUSE SUPPORT:
//The mouseDown() method is called if the mouse button is pressed
// while the mouse cursor is over the applet's portion of the screen.
//--------------------------------------------------------------------------
public boolean mouseDown(Event evt, int x, int y)
{
// TODO: Place applet mouseDown code here
return true;
}

// MOUSE SUPPORT:
//The mouseUp() method is called if the mouse button is released
// while the mouse cursor is over the applet's portion of the screen.
//--------------------------------------------------------------------------
public boolean mouseUp(Event evt, int x, int y)
{
// TODO: Place applet mouseUp code here
return true;
}

// MOUSE SUPPORT:
//The mouseDrag() method is called if the mouse cursor moves over the
// applet's portion of the screen while the mouse button is being held down.
//--------------------------------------------------------------------------
public boolean mouseDrag(Event evt, int x, int y)
{
// TODO: Place applet mouseDrag code here
return true;
}

// MOUSE SUPPORT:
//The mouseMove() method is called if the mouse cursor moves over the
// applet's portion of the screen and the mouse button isn't being held down.
//--------------------------------------------------------------------------
public boolean mouseMove(Event evt, int x, int y)
{
// TODO: Place applet mouseMove code here
return true;
}

// MOUSE SUPPORT:
//The mouseEnter() method is called if the mouse cursor enters the
// applet's portion of the screen.
//--------------------------------------------------------------------------
public boolean mouseEnter(Event evt, int x, int y)
{
// diplay new picture, if already displayed that last, go
// back to the first
if (m_nCurrImage < NUM_IMAGES-1)
m_nCurrImage++;
else
m_nCurrImage = 0;
displayImage(m_Graphics);

return true;
}

// MOUSE SUPPORT:
//The mouseExit() method is called if the mouse cursor leaves the
// applet's portion of the screen.
 //--------------------------------------------------------------------------
public boolean mouseExit(Event evt, int x, int y)
{
// TODO: Place applet mouseExit code here
return true;
}


// TODO: Place additional applet code here

}

Here is the HTML for the page with the applet:

<html>
<body bgcolor="#ffffff">
<applet
    code=pics.class
    name=pics
    width=62
    height=134>
</applet>
</body>
</html>

© 1999 Microsoft Corporation. All rights reserved. Terms of use.