我正在重建我创建的简单游戏程序以提高效率。当我尝试将一个Icon设置为JButton时,我遇到了麻烦。该程序的简单版本运行完美,在这方面没有任何问题。我在这里使用相同的代码完成相同的任务,但我收到了很多我以前没见过的错误。我可以帮助理解错误吗?
这是.jpg文件的路径:/Program/src/fire.jpg
这是我用来将图标添加到按钮的代码。错误指向以new
开头的行,特别是当我在Eclipse中将它们分隔出来时的工作new
。错误不在于hand.[d]
,我已经彻底测试过了。谢谢你给予的任何帮助。
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {GraphicGameBoard.hand[d].setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Program/fire.jpg")));}});
堆栈追踪:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at Program.Main$2.run(Main.java:168)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(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$1.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)
好的,getResource
查看了类路径。如果找不到资源,则返回null
。因此,如果您创建一个jar,您可以使用7zip / WinZip打开它并找到路径/Program/fire.jpg
(区分大小写!)。没有jar,从类根目录开始。
答案 1 :(得分:1)
我在这里找到了解决方案:
所以问题不在于我想到的图像文件的路径。这是我的JButton []数组。我只是声明了它,并没有在我的GUI中正确初始化它。