我正在用 Java 和 swing gui 为学校制作一个鱼雷游戏,请参阅压缩源 HERE .
我使用存储在/bin/resource/graphics/default 文件夹子文件夹中的自定义按钮图标和鼠标光标图像,其中根文件夹是程序的根文件夹(它也是最终 .jar 中的根文件夹)假设)除了“bin”之外还包含一个包含所有类的“main”文件夹。资源的相对路径存储在MapStruct.java的shipPath和mapPath变量中。 现在,Battlefield.java 的 PutPanel 类找到了它们并正确设置了其按钮的图标,但其他所有类都无法获取其图标,例如Table.java 的 setCursor,它应该为选定船舶的图像或 Field.java 的 this.button.setIcon(icon) 的所有元素设置鼠标光标;在构造函数中,应设置“水”按钮的图标。
我通过调试观察了发生的情况,加载后图像保持为空,尽管路径似乎是正确的。我还尝试在图像文件夹中编写测试文件,但该方法返回 filenotfound 异常。我尝试获取类的路径,看看它是否从假定的位置运行,看起来确实如此,所以我现在确实找不到问题。
有人可以帮我吗? 谢谢。
最佳答案
您需要加载这样的图标:
ClassLoader cl= this.getClass().getClassLoader();
URL imageURL = cl.getResource("resources/...");
ImageIcon icon = new ImageIcon(imageURL);
并且您需要将资源文件夹添加到 Eclipse 中的类路径中。请注意,该路径不是文件路径,这样,如果您决定将应用程序捆绑在 jar 文件中,它就可以工作。
关于Java swing 应用程序找不到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658505/