I’m having problems when I pack my game into a jar, it won’t load images right… Read somewhere that I had to use class.getClassLoader().getResource() or something to get it right? Also, should I use BufferedImage?(is it faster?)
I’m using a singleton-class “BildeButikk” (ImageShop in english) to load images.
Image background = BildeButikk.get().getImage(“b.png”);
code:
package superspillet;
import java.util.HashMap;
import javax.swing.ImageIcon;
import java.net.URL;
import java.awt.*;
/**
* BildeButikk.java
* Singleton for å hente bilder.
*/
public class BildeButikk
{
private static BildeButikk butikk = new BildeButikk();
private HashMap bilder;
public BildeButikk()
{
bilder = new HashMap();
}
public static BildeButikk get()
{
return butikk;
}
public void removeImage(String id)
{
//dispose??
bilder.put(id,null);
}
public Image getImage(String id)
{
if(bilder.get(id)==null)
{
try
{
//Config.get.getPath("bilder") returns "data/bilder/"
Image tmp = loadImage(Config.get().getPath("bilder") + id);
bilder.put(id, tmp);
}
catch(Exception e)
{
System.out.println("Kunne ikkje laste bilde: " + id);
System.exit(0);
}
}
return (Image) bilder.get(id);
}
/**********************************
* metode for å laste bilde
* @param fileName Filnavnet på bilder som skal lastes.
* f.eks. "bilder/b.gif"
* @return Image et objekt av klassen Image
**********************************/
private Image loadImage(String fileName)
{
//URL newFileName = this.getClass().getClassLoader().getResource(fileName);
Image xx = null;
try
{
xx = new ImageIcon(fileName).getImage();
}
catch(Exception err)
{
System.out.println("Feil ved lasting av bilde.:" + err.getMessage());
err.printStackTrace();
}
return xx;
}
}

