0

我正在用 swing gui 用 java 为学校制作鱼雷游戏,请在此处查看压缩源。

我使用存储在 /bin/resource/graphics/default 文件夹的子文件夹中的图像的自定义按钮图标和鼠标光标,其中根文件夹是程序的根文件夹(我想它也将是最终 .jar 中的根)哪个除了“bin”之外,还包含一个包含所有类的“main”文件夹。资源的相对路径存储在 MapStruct.java 的 shipPath 和 mapPath 变量中。现在 Battlefield.java 的 PutPanel 类可以找到它们并很好地设置其按钮的图标,但是所有其他类都无法获取它们的图标,例如 Table.java 的 setCursor,它应该为所选船舶图像的所有元素设置鼠标光标或 Field.java 的 this.button.setIcon(icon); 在构造函数中,应该设置“水”按钮的图标。

我通过调试观察了发生的情况,加载后图像保持为空,尽管路径似乎是正确的。我也尝试在图像文件夹中编写一个测试文件,但该方法返回一个 filenotfound 异常。我试图获取课程的路径以查看它是否从假定的位置运行,并且似乎确实如此,所以我现在真的找不到问题。

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

4

2 回答 2

2

您需要加载这样的图标:

ClassLoader cl= this.getClass().getClassLoader();
URL imageURL   = cl.getResource("resources/...");
ImageIcon icon = new ImageIcon(imageURL);

您需要将资源文件夹添加到 Eclipse 的类路径中。请注意,该路径不是文件路径,如果您决定将应用程序捆绑在 jar 文件中,它将起作用。

于 2010-04-17T13:49:36.940 回答
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 Master 是我的班级,而 reg.png 是我的图像,属于我的项目

于 2015-12-09T10:32:19.813 回答