Image對象是一個(gè)包裝了本地資源的Java結(jié)構(gòu),不能被Java的垃圾回收器管理。加載圖像而不卸載,會(huì)導(dǎo)致內(nèi)存泄漏。

          Eclipse使用ImageDescriptor來描述ImageImageDescriptor可以通過getImageDescriptor()方法來獲得。

          ImageCache類為一個(gè)專門管理圖像的類。
          package com.plugindev.addressbook.util;

          import java.util.HashMap;
          import java.util.Iterator;

          import org.eclipse.jface.resource.ImageDescriptor;
          import org.eclipse.swt.graphics.Image;

          public class ImageCache {
              
          private final static HashMap<ImageDescriptor, Image> imageMap = new HashMap<ImageDescriptor, Image>();

              
          private static ImageCache instance;

              
          //單例,獲得ImageCache的唯一實(shí)例
              public static ImageCache getInstance() {
                  
          if (instance == null)
                      instance 
          = new ImageCache();
                  
          return instance;
              }

              
          //保證每個(gè)圖像資源只有唯一的創(chuàng)建操作
              public Image getImage(ImageDescriptor descriptor) {
                  
          if (descriptor == null)
                      
          return null;
                  Image image 
          = (Image) imageMap.get(descriptor);
                  
          if (image == null) {
                      image 
          = descriptor.createImage();
                      imageMap.put(descriptor, image);
                  }
                  
          return image;
              }

              
          //卸載圖像資源
              public void dispose() {
                  Iterator iter 
          = imageMap.values().iterator();
                  
          while (iter.hasNext())
                      ((Image) iter.next()).dispose();
                  imageMap.clear();
              }
          }

          ImageKey保存所有圖像路徑字符串描述符
          package com.plugindev.addressbook.util;

          import org.eclipse.jface.resource.ImageDescriptor;

          import com.plugindev.addressbook.Activator;

          public final class ImageKeys {
              
          public static final String IMAGE_CATEGORY = "icons/category.gif";
              
          public static final String IMAGE_PEOPLE = "icons/people.gif";
              
              
          //類別圖像
              public static final String IMG_CAT_BUSINESS = "icons/category/business.gif";
              
          public static final String IMG_CAT_FAMILY = "icons/category/family.gif";
              
          public static final String IMG_CAT_FRIENDS = "icons/category/friends.gif";
              
          public static final String IMG_CAT_LOVER = "icons/category/lover.gif";
              
          public static final String IMG_CAT_MATE = "icons/category/mate.gif";
              
          public static final String IMG_CAT_ORDINARY = "icons/category/ordinary.gif";
              
          public static final String IMG_CAT_VIP = "icons/category/vip.gif";
              
          public static final String IMG_CAT_UNKNOWN = "icons/category/unknown.gif";
              
          public static final String IMG_CAT_TEACHER = "icons/category/teacher.gif";
              
              
          //操作圖像
              public static final String IMG_TOOL_ADD = "icons/actions/add.gif";
              
          public static final String IMG_TOOL_DELETE = "icons/actions/delete.gif";
              
          public static final String IMG_TOOL_DISABLEDELETE = "icons/actions/delete_dis.gif";
              
          public static final String IMG_TOOL_FILTER = "icons/actions/filter.gif";
              
              
          //編輯器相關(guān)
              public static final String IMG_FORM_BG = "icons/editors/form_banner.gif"//$NON-NLS-1$
              public static final String IMG_HORIZONTAL = "icons/editors/th_horizontal.gif"//$NON-NLS-1$
              public static final String IMG_VERTICAL = "icons/editors/th_vertical.gif"//$NON-NLS-1$
              
              
          //ScrollBlock圖標(biāo)
              public static final String IMG_SCROL_BASIC = "icons/editors/basic.gif";
              
          public static final String IMG_SCROL_PHONE = "icons/editors/phone.gif";
              
          public static final String IMG_SCROL_AREA = "icons/editors/area.gif";
              
          public static final String IMG_SCROL_CONTACT = "icons/editors/contact.gif";
              
              
          //向?qū)嚓P(guān)
              public static final String IMG_WIZARD_NEW = "icons/wizards/new_wiz.gif";
              
              
          //幫助相關(guān)
              public static final String IMG_HELP = "icons/help/help.gif";
              
              
          public static ImageDescriptor getImageDescriptor(String path)
              {
                  
          return Activator.getImageDescriptor(path);
              }
          }


          Feedback

          # re: Eclipse插件開發(fā)學(xué)習(xí)筆記 圖像管理  回復(fù)  更多評(píng)論   

          2010-03-10 20:25 by zhangjia
          hao

          posts - 37, comments - 5, trackbacks - 0, articles - 0

          Copyright © eric_xu

          主站蜘蛛池模板: 乐清市| 灌阳县| 西吉县| 油尖旺区| 固阳县| 桓台县| 山东省| 金门县| 泽库县| 商河县| 芷江| 福建省| 湟源县| 博乐市| 兴山县| 达孜县| 民和| 杭锦后旗| 老河口市| 弥渡县| 哈巴河县| 五大连池市| 天峻县| 股票| 怀安县| 巍山| 惠州市| 秭归县| 福清市| 龙游县| 乌拉特后旗| 金门县| 泽库县| 弋阳县| 五台县| 清丰县| 衢州市| 花垣县| 玛多县| 溧阳市| 横峰县|