GEF,EMF,RCP,Eclipse's plugin的几个问题(4) No more handles Exception 解决办法

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

这个异常,一般是由于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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航