Previous | Next | Trail Map | Creating a GUI with JFC/Swing | Working with Graphics

Displaying Images

Here is a code example that displays an image at its normal size in the upper left corner of the component area (0, 0):
g.drawImage(image, 0, 0, this);
Here is a code example that displays an image scaled to be 300 pixels wide and 62 pixels tall, starting at the coordinates (90, 0):
g.drawImage(myImage, 90, 0, 300, 62, this);
The following snapshot shows an applet that loads a single image and displays it twice, using both code snippets that you see above. You can find the program's full code in ImageDisplayer.java.
Click this figure to run the applet.
This is a picture of the applet's GUI. To run the applet, click the picture. The applet will appear in a new browser window.

The Graphics class declares the following drawImage methods. They all return a boolean value, although this value is rarely used. The return value is true if the image has been completely loaded and thus completely painted; otherwise, it's false.

The drawImage methods have the following arguments:
Image img
The image to paint.
int x, int y
The coordinates of the upper left corner of the image.
int width, int height
The width and height (in pixels) of the image.
Color bgcolor
The color to paint underneath the image. This can be useful if the image contains transparent pixels and you know that the image will be displayed against a solid background of the indicated color.
ImageObserver observer
An object that implements the ImageObserver interface. This registers the object as the image observer so that it's notified whenever new information about the image becomes available. Most components can simply specify this.
The reason why components can specify this as the image observer is that the Component class implements the ImageObserver interface. Its implementation invokes the repaint method as the image data is loaded, which is usually what you want to happen.

The drawImage method returns after displaying the image data that has been loaded, so far. If you want to make sure that drawImage paints only complete images, then you must track image loading. See the previous page for information on tracking image loading.


Previous | Next | Trail Map | Creating a GUI with JFC/Swing | Working with Graphics