3

我创建了一个项目,在项目内有一个名为 Source Packages 的文件夹,其中包含我的包。我需要图像,并且我想将它们复制到项目内的文件夹中(或者更好的是在源包中),这样当我创建 .jar 时,图像文件夹将位于 jar 文件中。如何在 NetBean 中做到这一点?

编辑:我还是想不通,这是代码:

 Image star; 
 InputStream stream = getClass().getResourceAsStream("images/star.png");
 star= ImageIO.read(stream);

它不起作用,我收到错误“IllegalArgumentException input==null”

如果我尝试使用以下代码,则文件夹“images”位于项目“Game”的文件夹中:

Image star; 
InputStream stream = getClass().getResourceAsStream("images/star.png");
star= Toolkit.getDefaultToolkit().getImage("images/star.png");

它有效,我在 InputStream 上做错了什么?

4

2 回答 2

2

您可以将图像复制/粘贴到您的包或包所代表的文件夹中。当您要访问图像时:

InputStream stream = getClass().getResourceAsStream("/com/my/pkg/my_image.png");

有关更多示例,请参见此 SO 问题:

如何将指定包中的图像添加到标签、框架等中

编辑: ClassLoader.getResourceAsStream(String) 将找到位于您为路径指定的包中的任何资源。例如,如果您想com.my.pkg.a从位于的类中获取驻留在其中的图像com.my.pkg.b

// From com.my.pkg.b.MyClass
InputStream stream = getClass().getResourceAsStream("/com/my/pkg/a/my_image.png");

请注意,指定的路径转到 package a。即使图像位于不同的包中,这也会找到图像。有关更多详细信息,请参阅内部使用的ClassLoader.getResource()的 javadoc 。

于 2011-10-21T12:55:00.130 回答
0
  1. create a folder in your root project folder ("resources" for instance)
  2. in the project properties dialog, "Sources" page, click on the "Add Folder..." button that is at the right of the "Source package folders" table
  3. Select your newly created folder, click OK
  4. Change the label for your folder in the "Source package folders" table ("Resource Packages" for instance)

The files in that folder will be included in the jar of your application.

于 2011-10-21T13:45:43.363 回答