private static ImageIcon getImage(String imageName) { ImageIcon image = null; InputStream resourceAsStream = null; try { SoftReference<ImageIcon> reference = imageCache.get(imageName); if (reference != null) { image = reference.get(); } if (image == null) { String name = IMAGE_PATH + File.separatorChar + imageName; resourceAsStream = LocationResolver.getResourceAsStream(name); image = new ImageIcon(ImageIO.read(resourceAsStream)); imageCache.put(imageName, new SoftReference<ImageIcon>(image)); } } catch (IOException e) { e.printStackTrace(); } finally { if (resourceAsStream != null) { try { resourceAsStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return image; }