在学习如何用Java编程的过程中,我写了一个Snake克隆。它是一个使用图像的小程序(使用getImage(getDocumentBase(),“gfx/image.png”在init()方法中加载);
当我在我的IDE (Eclipse)中运行这个applet时,它运行得很好,并且显示了所有的图像。
然而,我的目标是创建一个可执行的jar文件,它比applet更容易传递。因此,我创建了一个新类,并使用JPanel来托管我的小程序。现在的问题是getDocumentBase()总是返回null,导致在文件系统上找不到图像,从而导致一个空屏幕。
我知道游戏会运行,因为我可以浏览所有的菜单,并看到所有打印的文本。它只是没有加载的图像。
有什么办法可以解决这个问题吗?我应该以另一种方式加载我的图像吗?
谢谢
发布于 2011-04-21 08:28:54
您可以使用Class
中的getResource()
方法从jar文件中加载资源。在DevX上有一个很好的教程,向你展示了如何在小程序和应用程序中做到这一点:
http://www.devx.com/tips/Tip/5697
还有一篇来自Oracle的文章描述了如何以独立于位置的方式访问资源:
http://download.oracle.com/javase/1.4.2/docs/guide/resources/resources.html
基本上,您访问的图像如下所示:
URL myurl = this.getClass().getResource("/myimage.gif");
Toolkit tk = this.getToolkit();
img = tk.getImage(myurl);
发布于 2011-04-21 08:35:42
像这样加载你的图像:
public void init() {
URL url = getClass().getResource("/gfx/image.png");
Image image = getImage(url);
}
然后将gfx/image.png
文件添加到jar中并保留路径。请注意,jar文件只是zip文件。
https://stackoverflow.com/questions/5741403
复制相似问题