2012-01-09 2 views
0

이 답변을 보았습니다 : Add image to JAR Java 그러나 어떻게 작동하는지 이해하지 못했습니다. 나는 단계별로 설명하려고 노력할 것이다. 나는 내 프로젝트Java - 소스에서 이미지로드

  • 테스트
    • SRC
      • com.test
        • tester.java
        • img.png에 이미지를 추가 시작에서

    • 이미지
      • img.png
    • JRE 시스템 라이브러리

내 질문 - 어디 내 img.png을 배치해야합니까? 그것이 작동하지 않습니다 -

  • "이미지/img.png는"

    그럼 내가 우는 소리처럼 다른하는 Pathes를 시도했습니다

    URL url = tester.class.getResource(PATH); 
        ImageIcon ii = new ImageIcon(url); 
    

    자원에서 얻을하려고합니다. ii의 크기가 잘못되었습니다.

  • "/images/img.png"- 전혀 작동하지 않습니다.

내가 잘못하고있는 것을 말해 줄 수 있습니까? 어렵지 않은 경우 단계별로 알려주세요.


얘들 아, 내가 큰 길이 URL을 경우, 나는 이미지를 볼 수 없습니다 메모를 촬영했습니다,하지만 난 C에 파일을 복사 할 경우 (예를 들어), 나는 그것을 볼 수 있습니다 . 무슨 일 이니? 벌레 야? 그건 그렇고, 내 URL을 포함하고 있습니다! 기호.

+2

설명 : '작동하지 않습니다. ii의 크기가 틀리면? ' 이미지 라이트를로드 하나 올바른 크기로 표시 할 수 없습니까? –

+0

잘못된 경로를 쓰면 오류가 발생합니다. 스레드 "main"의 예외 java.lang.NullPointerException \t at javax.swing.ImageIcon. (알 수없는 출처) \t 그러나 image/img.png와 같은 정확한 경로를 쓰는 경우 - height = -1 및 width = -1 인 잘못된 ImageIcon을 사용합니다. 그래서 결과를 보지 못했습니다. – Nolesh

+0

문제는 이미지의 크기가 아니라 이미지의 크기와 같습니다. –

답변

5

/images/img.png/으로 시작하므로 절대 경로입니다. 귀하의 질문을 바탕으로, images 폴더가 test 패키지에 있기 때문에하지 않는, 존재 않습니다이 경로는 당신이 리소스를로드하려고에서 /test/images/img.png

경로 images/img.png 클래스를 기준으로해야하므로. 문제는 "나는 작동하지 않는다."라는 말의 의미를 이해하지 못한다. 당신은 그것에 대해 정교해야합니다.

나는 문서 상담하는 대신에, 나는 당신을 제안, 당신이 여기 로딩 자원의 규칙을 설명하지 않습니다

+1

귀하의 링크는 자바 1.4의 Javadoc을 가리키며 실제로는 정말 오래되었습니다. –

+0

최신 버전의 JavaDocs에 링크하는 것이 가장 좋습니다. J2SE 7을 가리 키도록 답변을 편집했습니다. 최신 문서에 대한 링크를 얻는 방법은 [장점 2] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875)를 참조하십시오. . (그리고 RFE에 투표하는 것은 자유 롭다 - 이것은 J2SE JavaDoc 링크를 과거의 것으로 만들 것이다.) –

+0

@EliAcherkan이 수정되었다. –

2

당신이해야을 이미지 폴더에 이미지를 배치하십시오.

나는 내 문제에 대한 모든 해답을 시도하고, 그들 중 누구도 일하지이

String path = "images/img.png"; 
URL url = tester.class.getResource(path); 
+0

OP가 동일한 작업을 수행하지 않았습니까? –

+0

Eclipse에서 컴파일 할 때 작동합니다. 하지만 JAR 파일로 내보낼 때 작동하지 않습니다. 나는 경로를 확인했다. 그것은 다음과 같습니다 : /C:/test.jar!/com/test/images/img.png - 나는 의심 스럽습니다! JAR exstention 후 상징! – Nolesh

+0

"jar-xvf test.jar"를 사용하여 jar 파일을 압축 해제 한 경로입니다. 어떻게 그걸 얻었습니까! 상징? –

0

같은 이미지를로드합니다. 나는 친구에게 물었고 그는 내 문제에 완벽하게 대답했다. 이미지라는 소스 폴더를 만듭니다 (즉, Eclipse를 사용하는 경우 프로젝트 -> 새 -> sourceFolder를 마우스 오른쪽 단추로 클릭). 네가 원하는대로 부르면 나는 내 이미지라고 불렀다. 그 안에 몇 가지 이미지를 넣으십시오.

이제 ImageIcon을 제공 한 JLabels를 사용하게되었습니다. 다음 코드를 살펴보십시오.

ImageIcon BPawn; 
    ImageIcon WPawn; 
    JLabel Label = new JLabel[8][8] //2D array of labels that gives each spot a position. 
    public void setPieces(){ 
     //set up pawns in their respective positions. 
     BPawn = new ImageIcon("Images/BPawn.png", "BPawn"); 
     WPawn = new ImageIcon("Images/WPawn.png", "WPawn"); 
    for(int i=0;i<Label[0].length;i++){ 
     Label[1][i].setIcon(BPawn); 
     Label[6][i].setIcon(WPawn); 
    }//end for 

    }//end setPieces. 

거기에 setPieces에서 더 많은() 메소드이지만,이 엿볼 당신이 실행 항아리를 만들고 이미지를 표시 할 때 원본 폴더에있는 이미지를 참조하는 것이 방법이다.

-1

이미지/BPawn.png 경로에서 다시 사용 : BPawn = 새 ImageIcon ("{Projectname}/{map}/{image.jpg/png/whatever}");

WPawn에 대해서도 동일합니다.

+0

에 오신 것을 환영합니다. 이것은 대답이 아닌 다른 대답에 대한 설명이므로 곧 삭제 될 것입니다. – Marco13