JDK 1.1 for Solaris Developer's Guide

Images

You can use the following types of images.

Painting and Drawing

To improve performance in these areas, use the following techniques:

Asynchronous Loading

To improve (asynchronous) loading performance, use your own imageUpdate() method to override imageUpdate(). imageUpdate() can cause more repainting than you might want..


//wait for the width information to be loaded
while (image.getWidth(null) == -1 {
		try {
			Thread.sleep(200);
		}
		catch(InterruptedException e) {
		}
	}  
	if (!haveWidth) {
		synchronized (im) {
			if (im.getWidth(this) == -1) {
				try {
					im.wait();
         	}
        	catch (InterruptedException) {
				}
			}
		}
//If we got this far, the width is loaded, we will never go thru
// all that checking again.
		haveWidth = true;
	} 
... 
public boolean imageUpdate(Image img, int flags, int x, int y, int width, \
			int height) {
		boolean moreUpdatesNeeded = true;
		if ((flags&ImageObserver.WIDTH)!= 0 {
			synchronized (img) {
				img.notifyAll();
				moreUpdatesNeeded = false;
			}
		}
		return
		moreUpdatesNeeded;
}    

Pre-Decoding

Pre-decoding and storing the image in an array will improve performance. Image decoding time is greater than loading time. Pre-decoding using PixelGrabber and MemoryImageSource should combine multiple images into one file for maximum speed. These techniques are more efficient than polling.