我正在使用swing gui为java学校制作鱼雷游戏,请参阅压缩来源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异常。我试图获得类的路径,看它是否从所谓的地方运行,它似乎确实如此,所以我现在真的找不到问题。
有人可以帮帮我吗? 谢谢。
答案 0 :(得分:2)
您需要加载以下图标:
ClassLoader cl= this.getClass().getClassLoader();
URL imageURL = cl.getResource("resources/...");
ImageIcon icon = new ImageIcon(imageURL);
您需要将资源文件夹添加到Eclipse中的类路径中。请注意,路径不是文件路径,这样,如果您决定将应用程序捆绑在jar文件中,它将起作用。
答案 1 :(得分:0)
btnRegistration.setIcon(createImageIcon("reg.png"));
protected ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Master.class.getClassLoader().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.out.println("Couldn't find file: " + path);
return null;
}
}
这里btnRegistration是我的JButton 师父是我的班级 和reg.png是属于我的项目的图像