JDK 1.1 for Solaris Developer's Guide


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 {
		catch(InterruptedException e) {
	if (!haveWidth) {
		synchronized (im) {
			if (im.getWidth(this) == -1) {
				try {
        	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) {
				moreUpdatesNeeded = false;


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.