这个异常,一般是由于Image 新建次数过多,导致系统handles(句柄)不够用,throw的
系统级错误.
在GEF程序中,一般出现在XXXTreeEditPart的getImage方法中,由于EditPart要经常刷
新前端显示图形,也就要经常刷新OutLine View,所以,在getImage中获取的Image一定
要先注册到Plugin的ImageRegistry中,也可以自己用HashMap来保存,到时候,直接从
Map中取即可,这样,就不用重新创建handle,也就不会出现handles不够的问题了.
具体如下:
public static HashMap ImageList = new HashMap();
//regieser images
public static void registerImages(){
Image image = null;
for (int i=0;i<AllImageNameList.length;i++){
//AllImageNameList为image 文件名称(含路径) 数组
//例如:icons/node/nodeXXX.gif
String str = AllImageNameList[i];
//YourPlugin中的方法...
image = YourPlugin.getImageDescriptor(str).createImage();
ImageList.put(str,image);
}
}
//get Image
//在XXXTreeEditPart的getImage方法中调用...
public static Image getNodeImage(String nodeId){
return (Image)ImageList.get(nodeId);
}