Java swing app无法找到图像

时间:2010-04-17 13:33:47

标签: java image swing file-not-found

我正在使用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异常。我试图获得类的路径,看它是否从所谓的地方运行,它似乎确实如此,所以我现在真的找不到问题。

有人可以帮帮我吗? 谢谢。

2 个答案:

答案 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是属于我的项目的图像