2012-11-11 80 views
0

我對NetBeans很熟悉,並正在使用Java完成我的第一個教程。Java getImage()位置(NetBeans IDE)

我沒有看到系統托盤圖標出現,我懷疑我將圖標放在項目文件中的錯誤位置。這裏是我的代碼裏面SysTray.java:

package systray; 

import java.awt.*; 

public class SysTray { 

    public static void main(String[] args) { 

     Runnable runner; 
     runner = new Runnable() { 

    public void run() { 
     if (SystemTray.isSupported()) { 
      SystemTray tray = SystemTray.getSystemTray(); 
      Image image = Toolkit.getDefaultToolkit().getImage("MyIcon.png"); 
      PopupMenu popup = new PopupMenu(); 
      MenuItem item = new MenuItem("A MenuItem"); 
      popup.add(item); 
      TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup); 
      try { 
      tray.add(trayIcon); 
      } catch (AWTException e) { 
      System.err.println("Can't add to tray"); 
      } 
     } else { 
      System.err.println("Tray unavailable"); 
     } 

     } 
    }; 
    EventQueue.invokeLater(runner); 
    } 
} 

我放在「MyIcon.png」的同一目錄中SysTray.java(主)內。 但我其實猜到了這是我應該放置的地方。

這裏的目錄結構:

系統托盤/

  • 源包/ - 系統托盤/ - SysTray.java
  • 源包/ - 系統托盤/ - MyIcon.png
  • 庫/

我看到系統托盤中圖標的空白處,當我懸停鼠標時,我看到「提示文本」。但沒有圖標。

我也從NetBeans收到關於丟失圖像的錯誤。所以,我被卡住了

+0

你有沒有嘗試將圖像放在src文件夾中? – Suranga

+0

我沒有看到「src」文件夾 – coffeemonitor

+0

我的意思是你的源代碼包/ level – Suranga

回答

0

你可以通過指定圖像的絕對路徑來讓你的方式工作,例如, 「C:\ MyProjects下\項目名稱\包名\ MyIcon.png」

你想要什麼,雖然是將圖像加載作爲一種資源,而不是直接從文件系統(當你部署爲一個罐子裏)。就像這樣:

String imageLocation = "/systray/MyIcon.png"; 
URL imageURL = this.getClass().getResource(imageLocation); 
Image image = Toolkit.getDefaultToolkit().getImage(imageURL); 

How to correctly get image from 'Resources' folder in NetBeans對如何添加一個資源文件夾(圖像,聲音等)。