我正在编写一个PONG游戏的简单程序,而我的问题来自Main方法,我想设置一个图像图标,并向我射击NullPointerException。
我正在使用Eclipse IDE 2019,06和Java Compiler 12.0.1。我正在使用的图像是.jpg。 我试图改变图像的目录,什么也没有:(。 图像目录位于与主类相同的文件夹中。
这是我的框架代码:
public class Menu {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Menu window = new Menu();
window.frame.setVisible(true);
window.frame.setLocationRelativeTo(null);
window.frame.setTitle("PONG!");
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Menu() {
frame.setIconImage(new ImageIcon(Menu.class.getResource("/icon.jpg")).getImage());
initialize();
}
这是错误消息:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at gui.Menu.<init>(Menu.java:57)
at gui.Menu$1.run(Menu.java:42)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
希望您能帮助我解决这个问题。谢谢。
答案 0 :(得分:1)
我猜Menu.java
的第57行是此行:
frame.setIconImage(new ImageIcon(Menu.class.getResource("/icon.jpg")).getImage());
frame
似乎尚未初始化,因此为null。这就是为什么您得到NullPointerException
的原因。
答案 1 :(得分:0)
在使用Maven构建系统(例如netbeans 11.3,maven 3.3.x)时,必须注意放置资源的位置。 “ /icon.jpg”路径是相对于您的资源目录的。尝试创建一个名为“ resources”(原文如此)的目录作为java主源目录的子目录。例如,“资源”的路径应为
<Project root>/src/main/resources
您将图像文件放置在此目录或/src/main/resources/icons/icon.jpg的子目录中