我在学习如何使用Java编程的过程中编写了一个Snake克隆。它是一个使用图像的applet(使用getImage(getDocumentBase(),“gfx / image.png”)在init()方法中加载;
当我在IDE(Eclipse)中运行applet时,它运行正常并显示所有图像。
我的目标是创建一个可执行的jar文件,我可以比applet更容易传递。所以我创建了一个新类并使用JPanel来托管我的applet。现在问题是getDocumentBase()总是返回null,导致在文件系统上找不到图像,导致屏幕空白。
我知道游戏运行因为我可以导航所有菜单并查看所有打印的文本。这只是未加载的图像。
这有什么办法吗?我应该以另一种方式加载我的图像吗?
由于
答案 0 :(得分:2)
您可以使用getResource()
中的Class
方法从jar文件中加载资源。在DevX上有一个很好的教程,向您展示如何为applet和应用程序执行此操作:
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);
答案 1 :(得分:0)
改为加载您的图片:
public void init() {
URL url = getClass().getResource("/gfx/image.png");
Image image = getImage(url);
}
然后将您的gfx/image.png
文件添加到jar中并保留路径。请注意,jar文件只是zip文件。