1. 适用于:SWT/JFace工程:
1) // 得到一个图像的ImageDescriptor对象
private ImageDescriptor getImageDesc(String fileName) {
try {
URL url = new URL("file:icons/" + fileName);
return ImageDescriptor.createFromURL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
2) 图片先注册,然后从图片缓存中获取:
/*
* 创建一个图像注册表,因为程序需要共享图像注册表ImageRegistry,所以在实际项目中
* 最好将ImageRegistry设置成静态变量(类变量)以使它可以被全局访问
*/
ImageRegistry imageRegistry = new ImageRegistry();
//创建一个图像描述符对象
URL url = new URL("file:src/275.jpg");
ImageDescriptor imageDesc = ImageDescriptor.createFromURL(url);
//将图像描述符添加到图像注册表,键值为“refresh”
imageRegistry.put("refresh", imageDesc);
//将图像从图像注册表取出
Image image = imageRegistry.get("refresh");
//从图像注册表取出图像描述符
ImageDescriptor imageDesc2 = imageRegistry.getDescriptor("refresh");
/**//*
* 将图像从注册表里移除,如果有组件正在使用这个图像,图像依然会被释放掉,组件上就不会显示此图像.
* 另外,如果注册表里没有这个键值“refresh”也不会显示错误或异常.
*/
imageRegistry.remove("refresh");
2. 在RCP/Plugin工程中获取图片的方法:
AbstractUIPlugin.imageDescriptorFromPlugin("crmSample", location);
例子:
AbstractUIPlugin.imageDescriptorFromPlugin(plugin的id, 文件的位置)!
/**
* 获取Toolbar上按钮图片的方法.
* @param fileName - 图片名称.
* @return
*/
private ImageDescriptor getImageDesc(String fileName) {
return AbstractUIPlugin.imageDescriptorFromPlugin(*PLUGIN ID*,"icons/".concat(fileName));
}