img
loading). Otherwise, it returns false. You can use the checkAll( ) method to see if all images
being tracked have been loaded.
You should use MediaTracker when loading a group of images. If all of the images that
you're interested in aren't downloaded, you can display something else to entertain the user
until they all arrive.
CAUTION  If you use MediaTracker once you've called addImage( ) on an image, a reference in
AUTION
MediaTracker will prevent the system from garbage collecting it. If you want the system to be
able to garbage collect images that were being tracked, make sure it can collect the MediaTracker
instance as well.
Here's an example that loads a seven-image slide show and displays a nice bar chart
of the loading progress:
/*
* <applet code="TrackedImageLoad" width=300 height=400>
* <param name="img"
* value="vincent+leonardo+matisse+picasso+renoir+seurat+vermeer">
* </applet>
*/
import java.util.*;
import java.applet.*;
import java.awt.*;
public class TrackedImageLoad extends Applet implements Runnable {
MediaTracker tracker;
int tracked;
int frame_rate = 5;
int current_img = 0;
Thread motor;
static final int MAXIMAGES = 10;
Image img[] = new Image[MAXIMAGES];
String name[] = new String[MAXIMAGES];
boolean stopFlag;
public void init() {
tracker = new MediaTracker(this);
StringTokenizer st = new StringTokenizer(getParameter("img"),
"+");
while(st.hasMoreTokens() && tracked <= MAXIMAGES) {
name[tracked] = st.nextToken();
img[tracked] = getImage(getDocumentBase(),
name[tracked] + ".jpg");
tracker.addImage(img[tracked], tracked);
tracked++;
}
}
public void paint(Graphics g) {
String loaded = "";
int donecount = 0;
for(int i=0; i<tracked; i++) {
Search WWH :
Custom Search
Previous Page
Java SE 6 Topic Index
Next Page
Java SE 6 Bookmarks
Home