1) This exception is thrown repeatedly java.io.IOException at sun.awt.image.GifImageDecoder.readHeader(GifImageDecoder.java:299) at sun.awt.image.GifImageDecoder.produceImage(GifImageDecoder.java:126) at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:257) at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:217) at sun.awt.image.ImageFetcher.run(ImageFetcher.java:185) 2) The second constructor is reported as an ilegal start of expression and looks very wrong. // JBuilder API Decompiler stub source generated from class file // Oct 17, 2006 // -- implementation of methods is not available package sun.awt.image; // Imports import java.lang.Object; import sun.awt.image.ImageFetcher$1; import sun.awt.image.ImageFetchable; import java.lang.ThreadGroup; import sun.awt.image.FetcherInfo; import java.security.PrivilegedAction; import java.lang.Thread; class ImageFetcher extends Thread { // Fields static final int HIGH_PRIORITY = 8; static final int LOW_PRIORITY = 3; static final int ANIM_PRIORITY = 2; static final int TIMEOUT = 5000; // Constructors private ImageFetcher(ThreadGroup p0, int p1) { } ImageFetcher(ThreadGroup p0, int p1, 1 p2) { } // Methods public static void add(ImageFetchable p0) { } public static void remove(ImageFetchable p0) { } public static boolean isFetcher(Thread p0) { } public static boolean amFetcher() { } private static ImageFetchable nextImage() { } public void run() { } private void fetchloop() { } static void startingAnimation() { } private static void stoppingAnimation(Thread p0) { } // Inner classes class ImageFetcher$1 implements PrivilegedAction { // Fields private final FetcherInfo val$info; private final ThreadGroup val$fetcherGroup; // Constructors ImageFetcher$1(FetcherInfo p0, ThreadGroup p1) { } // Methods public Object run() { } } } 3) This class extends ImageIcon and deals with the icons to display on the buttons. Nowhere in this code can an IOException be caught. /** * Title: Virtual Collaborative Working Environment Client * Description: The Client Application to use the virtual environment * Copyright: Copyright (c) 2006 * @author: Rosie Wood * @version 1.0 */ import java.awt.Image; import java.awt.Toolkit; /** *an ImageIcon object for display on GUI widgets */ public class IconPic extends ImageIcon { /** * The default Toolkit */ Toolkit toolkit=Toolkit.getDefaultToolkit(); /** * Image used for icon */ Image myPic; /* *Constructor sets up default image icon There are no problems displaying the gifs on the buttons. Only when a label and panels are added to the main panel when the button is pressed is there a problem. No gifs are used by my code when this occurs. */ /** * Constructor sets up default icon */ public IconPic() { try{ String picFile="door.gif"; java.net.URL imageURL = MainGUI.class.getResource(picFile); if (imageURL != null) { myPic=toolkit.getImage(imageURL); this.setImage(myPic);} }catch (Exception e){System.out.println("Cant do that"+e);}} /** * accepts the name of the file to get image from as a parameter * sets this icons image to the image in the file */ void setImage(String i){ String picFile=i; java.net.URL imageURL = MainGUI.class.getResource(picFile); if (imageURL != null) { myPic=toolkit.getImage(imageURL); this.setImage(myPic);}} /** *returns this imageIcon */ ImageIcon getIcon(){ return this;} /** *set icon to size required using Image method getScaledInstance */ void setSize(int w,int h){ try{ Image pic=myPic.getScaledInstance(w,h,myPic.SCALE_FAST); this.setImage(pic); }catch(NullPointerException npx){npx.printStackTrace();} } }