The MediaTracker inneficient w/o the ImageObserver ?

Hi!
I was wondering if someone’s already checked this statement that says : Innefficiency of MediaTracker w/o ImageObserver and vice-versa.
Because of some reasons, some web articles (http://www.sdv.fr/pages/casa/html/java-image.html and other posts in various forums) discussed this topic and but miss-spelled the relationship between these 2 Java Classes, as the MediaTracker’s would be used in place of ImageObserver’s.
I’d rather state that nor the MT nor the IObs can be used standing alone. They are related ! As someone says, they’re cousins and they can’t live one w/o each other.
Do you agree ? ???

Hence, buffered painting becomes easier only if BOTH of these classes are linked together with the SAME component. Let’s have a unit test :

 import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
class MainBufferedPainting {    
    class ImageComponent extends JComponent {
        public Component obs;
        public MediaTracker mt;
        public Image[] img;
        public void paint(Graphics g) {
            try {
                int rowIndex = 0;
                for(int index = 0; index < img.length; index++) {
                    mt.waitForID(index); // wait on mediaTracker
                    Point pos = new Point(
                            (int)((double)getWidth() - (double)img[index].getWidth(obs) / 2.0),
                            rowIndex
                            );
                    g.drawImage(img[index], pos.x, pos.y, obs);
                    rowIndex += img[index].getHeight(obs);
                }
            } catch(InterruptedException e) { e.printStackTrace();}
        }
    }
    public ImageComponent getComponent() {
        return new ImageComponent();
    }
    public static void main(String[] args) {
        JFrame f = new JFrame("Buffered Painting");
        MainBufferedPainting.ImageComponent comp = new MainBufferedPainting().getComponent();
// our test is out of three different image implementations
        comp.img = new Image[]{
            new BufferedImage(50,50, BufferedImage.TYPE_INT_ARGB),
            Toolkit.getDefaultToolkit().getImage("myImage.jpg"),
            GraphicsEnvironment. getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().createCompatibleVolatileImage(50, 50)
        };
        
// for a given component c which we want to paint on
        MediaTracker mt = new MediaTracker(f);
        for(int i = 0; i < comp.img.length; i++)
            mt.addImage(comp.img[i], i);
        ImageObserver obs = (ImageObserver)f;
        comp.obs = f;
        comp.mt = mt;
        comp.setPreferredSize(new Dimension(500,500));
        f.getContentPane().add(comp);
        f.pack();
        
        f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {
            System.exit(0);
        }});
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        try {
            while(true) {
                Thread.sleep(100);
                f.repaint();
            }
        } catch(InterruptedException e) { e.printStackTrace(); System.exit(0); }
    }
}

hence this be an assertion rule : the MediaTracker target (ImageObserver) must be equal to the Graphics ImageObserver otherwise painting will fail with no picture rendered. Can someone get this validated, too ?