2009-09-15 138 views
1

尝试运行的代码图像不加载

// 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,然后选择运行方式,然后选择1个Java应用程序。

我尝试在Chapter05目录中放置interspatial.gif,示例目录,ch5目录和图像目录(可能与来自同一章节的其他源代码有关)。

有 “的软件包examples.ch5;”在文件的开始行。

为什么图像没有加载?

回答

1

它看起来像你的形象是在错误的地方或有错误的名称。确保代码中的名称相同,并将其复制到一些新的位置以查看是否可以显示它。

的图像可能需要在完全相同的文件夹作为源文件,可能是“src”中去。

+0

'src'将是根 - 我不会在那里找到。它必须位于与java文件相同的文件夹中。 – andyczerwonka 2009-10-12 23:27:53

3

它扔java.io.FileNotFoundException。因此,你给了一个错误的路径,或者你的图像在给定的路径上不可用。

所以就到你的Eclipse工作区,并打开该项目正尝试运行(Chapter05)并在src文件夹中的文件LabelExample.java粘贴interspatial.gif图像。然后我认为它应该工作。

0

在你的榜样,

Image image = new Image(display, "interspatial.gif"); 

图像需要为这个代码相同的路径存在。如果这不是你想要的,你可以使用插件的Activator#getImageDescriptor(String path),它使用插件相对路径。另外,如果你想重复使用这个图像,你可以重写AbstractUIPlugin#initializeImageRegistry(ImageRegistry reg)并将图像添加到注册表中,稍后通过AbstractUIPlugin#getImageRegistry()#get(String key)获取它。注册管理机构负责处理图像。

1

的第二个参数...

new Image(display, "interspatial.gif") 

...是一个文件路径。由于“interspatial.gif”是而不是绝对路径,但是是相对路径,因此它与执行应用程序的当前工作目录(CWD)相关。

当您运行在Eclipse中你的应用程序,那么默认的CWD是项目的根。因此,将“interspatial.gif”文件移动到Eclipse项目的根目录即可解决问题。