2014-01-28 3 views
0

현재 다음 코드 세그먼트를 사용하여 인터페이스의 이미지를 가져옵니다.빌드시 자원 이미지가 병에 포함되지 않음

ImageIcon img = new ImageIcon("./lib/logo.gif"); 

JLabel lblNewLabel = new JLabel(""); 
lblNewLabel.setIcon(img); 
lblNewLabel.setBounds(28, 65, 140, 100); 

그러나 깨끗한 빌드를 실행하면 jar 파일을 실행할 때 이미지가 나타나지 않습니다. 무슨 문제가있는 것 같고 이미지 파일을 어디에 넣어야합니까? 미리 감사드립니다.

답변

1

"하지만 깨끗하고 빌드하면 jar 파일을 실행할 때 이미지가 나타나지 않습니다. 문제가있는 것 같고 이미지 파일을 어디에 두어야합니까?"

이것은 이 아니기 때문에 파일에서로드 할 때이 아닙니다. URL이있는 클래스 경로에서 으로로드하려는 경우

이미지는 개발 중에 src 어딘가의 패키지에 있어야합니다. 당신이 빌드 할 때와 IDE 클래스 경로에 당신을 위해 이미지를 복사하고 enter image description here

그런 다음 코드에서 클래스 경로에서로드 항아리에 추가합니다.

Class.getResource(..) 반환 URL을, 그래서 당신은 이런 종류의 질문을 물어이

ImageIcon icon = new ImageIcon(MyClass.class.getResource("/images/logo.gif")); 
+0

죄송하고 싶어하지만 MyClass에 수업이 무엇을 의미합니까? 그래서 그것을 적응할 수있다 – user3209957

+0

ImageIcon의 코드를 가진 당신의 클래스. '.class'는'Class' 객체'MyClass'를 의미합니다. 여기서'MyClass'는 코드가'ImageIcon icon = new ImageIcon (..)'에 있습니다. –

+0

클래스 이름이 무엇이든, 그냥 'MyClass'를 대체하십시오. 그것으로 –

1

제공된 코드 조각에서 이미지 파일의 경로는 파일 시스템에있는 것으로 간주됩니다 (ImageIcon의 생성자는 파일 이름을 인수로가집니다). jar 파일에서 파일 (또는 이미지)을로드하려면 ClassLoader.getResourceAsStream()을 사용해야합니다. this 질문을 확인하십시오.