And*_*ili 1 java swing embedded-resource imageicon
我正在学习Java Swing库,我遇到了问题.
在一个示例程序中,它通过以下行创建一个ImageIcon对象:
ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
Run Code Online (Sandbox Code Playgroud)
当我执行我的程序时,我得到以下错误:由于在项目中缺少exit.png:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at com.andrea.second.SimpleMenu.initUI(SimpleMenu.java:23)
at com.andrea.second.SimpleMenu.<init>(SimpleMenu.java:17)
at com.andrea.second.SimpleMenu$2.run(SimpleMenu.java:53)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Run Code Online (Sandbox Code Playgroud)
问题是,使用Eclipse,我必须把这个immage放在哪里?
我尝试将它(在我的文件系统中,而不是在Eclipse中)复制并粘贴到包含创建它的类的相同包文件夹中...但它不起作用
我有什么办法在Eclipse中解决这个问题?
同
ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
Run Code Online (Sandbox Code Playgroud)
您需要将其exit.png放在与所代表的类相同的包中getClass().
同
ImageIcon icon = new ImageIcon(getClass().getResource("/exit.png")); // note leading /
Run Code Online (Sandbox Code Playgroud)
您需要将它放在类路径的根目录中.在Eclipse中,通过直接放入它会发生这种情况src.
该Class#getResource(String)javadoc的状态
在委派之前,使用此算法从给定资源名称构造绝对资源名称:
如果名称以'/'('\ u002f')开头,则资源的绝对名称是'/'后面的名称部分.
否则,绝对名称具有以下形式:
modified_package_name/name其中modified_package_name是此对象的包名称,其中'/'替换为'.' ( '\ u002e').
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |