gpt4 book ai didi

java - 我应该在哪里放置图像以使用它来创建新的 Swing ImageIcon 对象?

转载 作者:行者123 更新时间:2023-11-29 07:54:09 24 4
gpt4 key购买 nike

我正在研究 Java Swing 库,但遇到了问题。

在示例程序中,它通过以下行创建一个 ImageIcon 对象:

ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));

当我执行我的程序时,由于项目中缺少 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)

问题是,使用 Eclipse,我必须把这个图像放在哪里?

我尝试将“exit.png”文件(在我的文件系统中,而不是在 Eclipse 中)复制并粘贴到包含创建它的类的同一个包文件夹中……但它不起作用

在 Eclipse 中我该怎么做才能解决这个问题?

最佳答案

ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));

您需要将exit.pnggetClass()表示的类放在同一个包中。

ImageIcon icon = new ImageIcon(getClass().getResource("/exit.png")); // note leading /

你需要把它放在类路径的根目录下。在 Eclipse 中,这可以通过将其直接放在 src 中来实现。

The Class#getResource(String) javadoc states

Before delegation, an absolute resource name is constructed from the given resource name using this algorithm:

If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.

Otherwise, the absolute name is of the following form:

modified_package_name/name Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e').

关于java - 我应该在哪里放置图像以使用它来创建新的 Swing ImageIcon 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19007945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com