2014-12-12 6 views
0

각 이미지의 각 줄을 코딩하지 않고도 내 이미지 폴더를로드 할 수있는 방법을 만들고 싶었지만 오류가 계속 발생하여 시도했습니다. 이것을하는 다른 방법 및 나는 아직도 그것을 파악할 수 없다. 그것은 불가능한가?텍스트 폴더에서 이미지를 읽어 리소스 폴더의 이미지를로드합니다.

다음은 작동 방법입니다. 텍스트 파일 (이 경우 startUp.txt)에 필요한 모든 이미지를 저장 한 다음 텍스트 파일에 링크 된 목록 (문자열)의 줄을 저장합니다. 루프를 사용하여 이미지를 가져 와서 링크 된 목록 (이미지)에 저장하여로드 할 모든 단일 이미지에 대한 코드를 작성할 필요가 없습니다.

여기 내 코드입니다 :

package com.game.task; 

import java.awt.Image; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.LinkedList; 
import java.util.Scanner; 

import javax.swing.ImageIcon; 

public class imagesTest { 

public LinkedList<Image> storeImages = new LinkedList<Image>(); 
private LinkedList<String> storeStrings = new LinkedList<String>(); 

public imagesTest() { 
    load(); 
    readimage(); 
} 

public void readimage() { 

    for(int index = 0; index < storeStrings.size(); index++){ 
     Image temp = new ImageIcon(this.getClass().getClassLoader().getResource("/res/"+storeStrings.get(index))).getImage(); 
     storeImages.add(temp); 
    } 

} 

private void load() { 
    File file = new File("Data/startUp.txt"); 
    try { 
     Scanner read = new Scanner(file); 
     while (read.hasNextLine()) { 
      storeStrings.add(read.nextLine()); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

public static void main(String[] arsg) { 
    imagesTest t = new imagesTest(); 
} 
} 

예외 :

Exception in thread "main" java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(ImageIcon.java:217) 
at com.game.task.imagesTest.readimage(imagesTest.java:24) 
at com.game.task.imagesTest.load(imagesTest.java:41) 
at com.game.task.imagesTest.<init>(imagesTest.java:17) 
at com.game.task.imagesTest.main(imagesTest.java:45) 
+0

내 의심의 여지가에있는 코드'의 getResource ("/ 입술 /"+ storeStrings.get (색인)))'. 이것으로부터'/ src /'를 제거해보십시오. [this] (http://www.mkyong.com/java/java-read-a-file-from-resources-folder/) 예제를 확인하십시오. – learningloop

+0

링크를 가져 주셔서 감사하지만 그것은 내가 싫어하는 것을 피하려고합니다.로드하고 싶은 각 이미지에 대한 코드를 작성하고 싶지 않습니다. – swingBoris

답변

0

내가 리소스 폴더를 통해 반복 할 수있는 방법을 발견하고 그 어렵지 않았다. 내가 사용하는 방법을 여기에 루프를 계속 전화해야했던 모든

package com.game.task; 

import java.awt.Image; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.LinkedList; 
import java.util.Scanner; 

import javax.swing.ImageIcon; 

public class imagesTest { 

public LinkedList<Image> storeImages = new LinkedList<Image>(); 
private LinkedList<String> storeStrings = new LinkedList<String>(); 

public imagesTest() { 
    load(); 
    start(); 
} 

public void readimage(String f) { 


    Image temp = new ImageIcon(this.getClass().getResource("/res/"+f)).getImage();//looks for it 
    storeImages.add(temp);//put it in a linked-List(Image) 

} 

public void start(){ 
    for(int index = 0; index < storeStrings.size(); index++){ 
     readimage(storeStrings.get(index));//calling the methode to look in resource folder 
    } 
} 
//reads the text file and puts the out put in a linked-list(String) 
private void load() { 
    File file = new File("Data/startUp.txt"); 
    try { 
     Scanner read = new Scanner(file); 
     while (read.hasNextLine()) { 
      storeStrings.add(read.nextLine()); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

} 

public static void main(String[] arsg) { 
    imagesTest t = new imagesTest(); 
} 
}