public Image[] doInBackground() { Image[] dibImgs = new Image[NUM_IMGS]; MediaTracker loadTracker = new MediaTracker( null ); //This should not work, but it isn't null dibImgs[0] = load( "res/waster1.PoNG" ); System.err.println( dibImgs[0] == null ); System.exit(0); dibImgs[1] = load( "res/water2.PNG" ); dibImgs[2] = load( "res/water3.PNG" ); dibImgs[3] = load( "res/hit.PNG" ); dibImgs[4] = load( "res/miss.PNG" ); dibImgs[5] = load( "res/conTop.PNG" ); dibImgs[6] = load( "res/conBtm.PNG" ); dibImgs[7] = load( "res/conSpacer.PNG" ); dibImgs[8] = load( "res/dispTopRight.PNG" ); dibImgs[9] = load( "res/dispTopLeft.PNG" ); dibImgs[10] = load( "res/dispBtmLeft.PNG" ); dibImgs[11] = load( "res/dispBtmRight.PNG" ); dibImgs[12] = load( "res/dispSpacerLeft.PNG" ); dibImgs[13] = load( "res/dispSpacerRight.PNG" ); dibImgs[14] = load( "res/dispSpacerTop.PNG" ); dibImgs[15] = load( "res/dispSpacerBtm.PNG" ); for ( int i = 0; i < NUM_IMGS; i++ ) { loadTracker.addImage( dibImgs[i], i ); } try { for ( int i = 0; i < NUM_IMGS; i++ ) { loadTracker.waitForID( i ); setProgress( getProgress() + PER_IMG_COMPLETION_AMT ); firePropertyChange( "Progress", 0, getProgress() ); } }catch ( InterruptedException e ) { //todo } while ( loadTracker.statusAll( true ) != MediaTracker.COMPLETE ) { loadTracker.statusAll( true ); } return dibImgs; } /** * Executed in dispatching thread */ public void done() { try{ images = get(); }catch ( java.util.concurrent.ExecutionException e ) { }catch ( InterruptedException e ) { } } private Image load( String path ) { Toolkit tools = Toolkit.getDefaultToolkit(); //throws AWTerror return tools.getImage( path ); }