2013-07-19 4 views
2

내 응용 프로그램의 시스템 트레이 아이콘 이미지를 변경하고 싶습니다. 시스템 트레이 아이콘 변경

그냥 기본 프로그램에서 URL을 변경 - -

final TrayIcon trayIcon = new TrayIcon(createImage("images/Graph.png", "tray icon")); 

두 번째 시도 -

Image img = Toolkit.getDefaultToolkit().getImage("images/Graph.png"); 
final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup); 

응용 프로그램은 두 경우 모두에서 실행되지만 이미지가 표시되지 않습니다 나는이 일을했다. 그것의 빈 자리 표시 자. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?

+0

가 원래 프로그램 작업을 했습니까? 아이콘의 경로 만 변경 했습니까? – Rayf

+0

원래 프로그램의 전구가 작동합니다. 예, 첫 번째 시도에서 아이콘의 경로 만 변경했습니다. – Dan

+0

그 다음에 당신의 궤도에 뭔가 이상한 것 같습니다. 전구 예제를 ​​사용하는 경우 아이콘을 변경하고 np로 작동하도록 할 수 있어야합니다. 파일이 누락 되었습니까? 다른 파일 형식을 시도해보십시오. 어쩌면? – Rayf

답변

4

images/Graph.png은 병에있는 이미지의 유효한 URL이 아닙니다. 그러므로, 나는 두 번째 시도에서 img이 null이라고 생각합니다.

//Get the URL with method class.getResource("/path/to/image.png") 
URL url = System.class.getResource("/images/Graph.png"); 

//Use it to get the image 
Image img = Toolkit.getDefaultToolkit().getImage(url); 

final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup); 

또한 images/이 클래스 경로에 있는지 확인한다

난 당신이 방법을 제안한다.

+0

당신은 애플리케이션을 점심으로 먹기 위해 jar 파일을 필요로하지 않습니다. java를 실행하는 것으로부터 경로를 지정합니다. someClass 대 java -jar someJar.jar은 다릅니다. – Rayf

+0

이 기능은 작동하지만 클래스 경로에 아무 것도 추가하지 않습니다. 하지만 첫 번째 시도가 왜 효과가 없었습니까? – Dan

+1

@ 경로에 /를 입력하십시오. – Rayf

2

이미지가 getResource() 또는 getResourceAsStream를 사용하십시오 . jar 내부로 이미지 파일을 포함하는 방법이 시도되어있는 문제 :

try { 
    InputStream inputStream= ClassLoader.getSystemClassLoader().getResourceAsStream("/images/Graph.png"); 
//or getResourceAsStream("/images/Graph.png"); also returns inputstream 

    BufferedImage img = ImageIO.read(inputStream); 
    final TrayIcon trayIcon = new TrayIcon(img, "Application Name", popup); 
} 
    catch (IOException e) {}