Loading many buffered images 100+ to memory in java
===

I am writing a program that involves a custom search for many images. When the user enters their search criteria the corresponding images are retrieved either from the cache or the server.  I have a JTable which displays links to the corresponding images.  When the user clicks on a link the image is displayed on a JPanel.   I can read an image from the hard drive when a link is clicked but it is not as fast as I would like.  It takes a couple of seconds to  load it.  I have tried creating an array of BufferedImages but if the search returns many results i go oom.  I am wondering what would be the best way to make the images display more quickly when the link is clicked. 

Heres how I obtain the images...
    
    Public void getFile(String fileName){
    File file = new File("./cache/"+fileName);
		boolean exists = file.exists();
		
		BufferedImage returnImage =null;
		if(exists){
			try {
				
				returnImage = ImageIO.read(file);
				System.out.println("Found In Cache!");
			} catch (IOException|IndexOutOfBoundsException e) {
				try {
					if(fileName != null){
					returnImage = downloadImage(fileName);
					System.out.println("Found ON Server :(");
					}
				} catch (IOException |IndexOutOfBoundsException ex) {
					// TODO Auto-generated catch block
					ex.printStackTrace();
				}
			}
		}else{
			try {
				if(fileName != null){
				returnImage = downloadImage(fileName);
				System.out.println("Found ON Server :(");
				}
			} catch (IOException |IndexOutOfBoundsException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	    return returnImage;	
	    
	}
    }

and this is where I put them in an array...
    
    BufferedImage[] images = new BufferedImage[numOfSearchResults];

    for(SearchResult r: results){
         images[i] = imageCache.getFile(r.imageName);
    }
    

Basically I'm just wondering what would be the best way to preload the images without going oom.  Thanks in Advance