尝试运行代码
// Create a label with an image
Image image = new Image(display, "interspatial.gif");
Label imageLabel = new Label(shell, SWT.NONE);
imageLabel.setImage(image);
给我错误信息
Exception in thread "main" org.eclipse.swt.SWTException:
i/o error (java.io.FileNotFoundException: interspatial.gif
(O sistema não pode encontrar o arquivo especificado))
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.ImageLoader.load(Unknown Source)
at org.eclipse.swt.graphics.ImageDataLoader.load(Unknown Source)
at org.eclipse.swt.graphics.ImageData.<init>(Unknown Source)
at org.eclipse.swt.graphics.Image.<init>(Unknown Source)
at examples.ch5.LabelExample.main(LabelExample.java:31)
Caused by: java.io.FileNotFoundException:
interspatial.gif
(O sistema não pode encontrar o arquivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.eclipse.swt.internal.Compatibility.newFileInputStream(Unknown Source)
... 5 more
其他信息:
在Eclipse中,我扩展了Chapter05,然后是examples.ch5,然后右键单击LabelExample.java,然后选择Run As,然后选择1 Java Application。
我尝试将interspatial.gif放在Chapter05目录中,示例目录,ch5目录和图像目录(可能与同一章中的其他源代码相关)。
有一个“包examples.ch5;”在文件开头的行。
为什么图片没有加载?
答案 0 :(得分:3)
抛出java.io.FileNotFoundException。因此,您给出了错误的路径,或者您的图像在给定的路径上不可用。
所以,只需转到Eclipse工作区并打开您尝试运行的项目(第05章),然后将文件LabelExample.java粘贴到src文件夹中的interspatial.gif图像。然后我认为它应该有用。
答案 1 :(得分:1)
看起来您的图片位置错误或名称错误。确保代码中的名称相同,然后将其复制到一些新的位置以查看是否可以显示它。
图像可能需要与源文件位于完全相同的文件夹中,可能是'src'。
答案 2 :(得分:1)
......的第二个参数
new Image(display, "interspatial.gif")
...是一个文件路径。由于“interspatial.gif”不是不是绝对路径,而是相对路径,它与执行应用程序的当前工作目录(CWD)有关。
在Eclipse中运行应用程序时,默认CWD是项目根目录。因此,将“interspatial.gif”文件移动到Eclipse项目的根目录将解决问题。
答案 3 :(得分:0)
在您的示例中,
Image image = new Image(display, "interspatial.gif");
您的图片需要与此代码存在于同一路径中。如果这不是您想要的,您可以使用插件的Activator#getImageDescriptor(String path)
,它使用插件相对路径。
另外,如果您想重复使用此图片,可以覆盖AbstractUIPlugin#initializeImageRegistry(ImageRegistry reg)
并将图像添加到注册表中,稍后通过AbstractUIPlugin#getImageRegistry()#get(String key)
获取。注册表处理图像的处理。