Posted on 2005-11-29 19:21
nemo 閱讀(1371)
評(píng)論(1) 編輯 收藏 所屬分類(lèi):
EclipseRCP/SWT/JFACE
最近一位同事也在用RCP開(kāi)發(fā),對(duì)圖像文件的加載頭疼不已。
想起幾個(gè)月前我在開(kāi)發(fā)時(shí)也有類(lèi)似的事情發(fā)生,于是簡(jiǎn)單總結(jié)了一下,希望對(duì)大家有些用處。
由于Eclipse RCP 需要面向不同的平臺(tái),所以不能用一般的方法來(lái)加載圖元,我們可以使用ImageDescriptor類(lèi)來(lái)對(duì)圖元進(jìn)行加載。而且我們?cè)诩虞d完圖元之后,必須親自將圖元dispose掉,否則有可能會(huì)導(dǎo)致系統(tǒng)資源泄漏。
實(shí)現(xiàn)方法一:
- 在Application文件中添加本工程的ID(String類(lèi)型,只要與plugin.xml中的工程ID相同即可)。
- 在想要獲得圖像文件的類(lèi)中實(shí)現(xiàn)createImageDescriptorFor(String id)方法。
具體實(shí)現(xiàn)如下:
public ImageDescriptor createImageDescriptorFor(String id) //id表示圖形文件相對(duì)于本工程的默認(rèn)路徑.
{
URL url = Platform.getBundle(pluginId).getEntry(id);//pluginId表示本工程的ID.
return ImageDescriptor.createFromURL(url);
}
實(shí)現(xiàn)方法二:
調(diào)用org.eclipse.ui.plugin.AbstractUIPlugin.imageDescriptorFromPlugin(String pluginId, String imageFilePath)方法。
仍然需要定義pluginId。
舉例:假設(shè)我們的圖像文件為本工程的/icons/image.gif。
那么我們要加載圖元可以使用一下語(yǔ)句:
Image image1 = org.eclipse.ui.plugin.AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, "/icons/image.gif");