Eclipse插件開發學習筆記 圖像管理

          Posted on 2009-07-31 13:51 eric_xu 閱讀(716) 評論(1)  編輯  收藏 所屬分類: Eclipse Plugin

          Image對象是一個包裝了本地資源的Java結構,不能被Java的垃圾回收器管理。加載圖像而不卸載,會導致內存泄漏。

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

          ImageCache類為一個專門管理圖像的類。
          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的唯一實例
              public static ImageCache getInstance() {
                  
          if (instance == null)
                      instance 
          = new ImageCache();
                  
          return instance;
              }

              
          //保證每個圖像資源只有唯一的創建操作
              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";
              
              
          //編輯器相關
              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圖標
              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";
              
              
          //向導相關
              public static final String IMG_WIZARD_NEW = "icons/wizards/new_wiz.gif";
              
              
          //幫助相關
              public static final String IMG_HELP = "icons/help/help.gif";
              
              
          public static ImageDescriptor getImageDescriptor(String path)
              {
                  
          return Activator.getImageDescriptor(path);
              }
          }


          Feedback

          # re: Eclipse插件開發學習筆記 圖像管理  回復  更多評論   

          2010-03-10 20:25 by zhangjia
          hao

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

          Copyright © eric_xu

          主站蜘蛛池模板: 东安县| 全南县| 夏河县| 于田县| 蒲江县| 漾濞| 兴业县| 靖远县| 缙云县| 芦山县| 洛隆县| 台东市| 临江市| 来宾市| 名山县| 师宗县| 札达县| 贵州省| 博罗县| 邹城市| 潞城市| 五寨县| 宣武区| 乌鲁木齐县| 兴文县| 宁化县| 航空| 昌图县| 岫岩| 永定县| 福贡县| 蒙自县| 潼南县| 江川县| 应城市| 卫辉市| 瑞丽市| 金华市| 佳木斯市| 保山市| 扶风县|