2012-11-11 53 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对如何添加一个资源文件夹(图像,声音等)。