2014-09-24 12 views
-1

나는 그 곳 곳곳을 바라 보았다.하지만 JPanel 위에 놓을 이미지를 찾기 위해 디렉토리가 어떻게 작동하는지 아직도 고민 중이다. 이미지는 어디에 있어야합니까? 내 이미지의 속성을 클릭하면 Location : C:\Users\Joseph\Pictures\Background이고 그림의 이름은 random.jpg입니다.imageicon (Java GUI)을 사용하여 JPanel에 이미지를 추가하려면 어떻게합니까?

tabbedPane을 사용하여 이미지를 탭에 추가하려고합니다. 여기에 내가 지금까지 가지고있는 것이 있으며 그것을 할 수 없다.

JPanel flPanel = new JPanel(); 

flPanel.setLayout(new FlowLayout()); 

ImageIcon image = new ImageIcon(getClass().getResource("")); 
// Tried /Users/Joseph/Pictures/Background/random.jpg and doesn't work 

JLabel j1 = new JLabel(image); 

flPanel.add(j1); 

tabbedPane.add("Tab 2", flPanel); 

그림이 프로젝트와 동일한 패키지 파일에 있어야합니까? 또는 "random.jpg"를 수행 할 수 있도록 소스 파일에 있어야합니까?

+2

가 스윙 튜토리얼 섹션을 읽고 [아이콘을 사용하는 방법 (http://docs.oracle.com/javase/tutorial /uiswing/components/icon.html)을 참조하십시오. – camickr

+1

답변을 받으면 자신의 질문을 파기하지 마십시오. –

+1

@TheodorosChatzigiannakis : 참고로, 그는 [오늘부터이 질문에] 질문을 다시 파탄하려했습니다. (http://stackoverflow.com/questions/26210236/why-is-my-fillpolygon-shape-looking-odd-java-gui). 사이트 운영자에게 알렸습니다. 우리는 그를 봐야 할 것이다. –

답변

2

이미지를 런타임에 응용 프로그램에서 사용할 수있게하려면 응용 프로그램을 만들 때 이미지가 Jar에 포함되어 있는지 확인해야합니다.

소리에서 Netbeans을 사용 중이므로 이미지를 프로젝트의 src 디렉토리에있는 디렉토리로 복사해야합니다.

그런 다음 사용할 수 있어야합니다 ...

BufferedImage bi = ImageIO.read(getClass().getResource("/full/path/to/image/random.jpg")); 
ImageIcon image = new ImageIcon(bi); 

이미지의 경로는 프로젝트 내합니다 (src 디렉토리의 맥락에서)의 전체 경로이어야한다. 당신이 src 디렉토리 내에서 resources 디렉토리에 이미지를 배치하는 경우

즉, 당신은 (자세한 내용

+0

저는 실제로 Eclipse를 사용하고 있습니다. 그것은 일식에서 같은 방식으로 작동할까요? – user3404854

+0

Eclipse 내의 파일 위치가 다릅니다. 'src' 디렉토리에 저장되기보다는 프로젝트 내의 resources 디렉토리 ('src'와 같은 위치)에 저장되고 빌드 과정에 포함될 필요가 있습니다. 리소스를 찾는 프로세스는 런타임 관점에서와 동일합니다 ... – MadProgrammer

+0

리소스를 직접 찾을 수 없습니다. 라벨은 무엇입니까? src, bin, .settings 파일, .classpath 및 .project가 표시됩니다. – user3404854

1

모두 getClass에 대한 Reading/Loading an Image를 살펴 보자 경로/파일 이름

/resources/random.jpg을 사용) .getResource (...)는 클래스 패스 내부의 리소스 만 가져옵니다.

이 같은 ImageIO.read (파일)를 사용할 수 있습니다 :

BufferedImage bi = ImageIO.read(new File("C:\\Users\\Joseph\\Pictures\\Background\random.jpg")) 
ImageIcon image = new ImageIcon(bi); 
+0

위의 코드에서 보여준 코드의 부분은 어디에 붙여야 하나? – user3404854

+0

선을 교체하십시오 ImageIcon image = new ImageIcon (getClass(). getResource (""))); – DiogoSantana

+0

예외 catch 및 try가 있습니다. 무엇이 될까? – user3404854