Loading Images

If you know the exact URL for the image you wish to load, you can load it like this:

URL imageURL = new URL("http://www.prenhall.com/logo.gif");
Image img = getImage(imageURL);

You can compress this into one line as follows

Image img = getImage(new URL("http://www.prenhall.com/logo.gif"));

The getImage() method is provided by java.applet.Applet so this works inside applets. Outside of applets you can use the getImage method from the default toolkit instead, like this:

 URL imageURL = new URL("http://www.prenhall.com/logo.gif");
 Image img = Toolkit.getDefaultToolkit().getImage(imageURL);

If you don't know the exact URL of the image but you do know its name and that it's in the same directory as the applet, you can use an alternate form of getImage() that takes a URL and a filename. Use the applet's getCodeBase() method to return the URL to the applet directory like this:

Image img = getImage(getCodeBase(), "test.gif");

The getCodeBase() method returns a URL that points to the directory where the applet came from.

Finally if the image file is stored in the same directory as the HTML file, use the same getImage method but pass it getDocumentBase() instead. This returns a URL that points at the directory which contains the HTML page in which the applet is embedded.

Image img = getImage(getDocumentBase(), "test.gif");

If an image is loaded from the Internet, it may take some time for it to be fully downloaded. Most of the time you don't need to worry about this. You can draw the image as soon as you've connected it to a URL. Java will update it as more data becomes available without any further intervention on your part.

Load all the images your applet needs in the init() method. In particular you do not want to load them in the paint() method. If you do they will be reloaded every time your applet repaints itself, and applet performance will be abysmal.


Previous | Next | Top | Cafe au Lait

Copyright 1997, 2002, 2005 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified April 20, 2005