Posted on 2005-11-29 19:21
nemo 阅读(1361)
评论(1) 编辑 收藏 所属分类:
EclipseRCP/SWT/JFACE
最近一位同事也在用RCP开发,对图像文件的加载头疼不已。
想起几个月前我在开发时也有类似的事情发生,于是简单总结了一下,希望对大家有些用处。
由于Eclipse RCP 需要面向不同的平台,所以不能用一般的方法来加载图元,我们可以使用ImageDescriptor类来对图元进行加载。而且我们在加载完图元之后,必须亲自将图元dispose掉,否则有可能会导致系统资源泄漏。
实现方法一:
- 在Application文件中添加本工程的ID(String类型,只要与plugin.xml中的工程ID相同即可)。
- 在想要获得图像文件的类中实现createImageDescriptorFor(String id)方法。
具体实现如下:
public ImageDescriptor createImageDescriptorFor(String id) //id表示图形文件相对于本工程的默认路径.
{
URL url = Platform.getBundle(pluginId).getEntry(id);//pluginId表示本工程的ID.
return ImageDescriptor.createFromURL(url);
}
实现方法二:
调用org.eclipse.ui.plugin.AbstractUIPlugin.imageDescriptorFromPlugin(String pluginId, String imageFilePath)方法。
仍然需要定义pluginId。
举例:假设我们的图像文件为本工程的/icons/image.gif。
那么我们要加载图元可以使用一下语句:
Image image1 = org.eclipse.ui.plugin.AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, "/icons/image.gif");