eclipse学习笔记!(8) ----- SWT Designer 下 图像设置

  • 图像(Image类) 

    开发项目中少不了用到图像,在SWT中图像是Image类,它有多种构造函数,下面主要介绍new Image(Device deviceString filename),来介绍,其中Device称为设备,它包含Display(显示)和Print(打印),两种设备。

    前面的很多例子里已经包含了图像的显示了,都是用的Display 设备。

Image是比较重量级的对象,占用内存很大,一般来说,当应用程序退出时,会释放掉Image所占用的资源。但某些OS由于特殊原因,Image仍有可能继续存在于系统内存中。综上所述,为了提高Image对象的使用率,在EclipseImage是可以被各组件共享的。当窗口关闭时,Image不会自动清除掉,而是继续保留在系统中,以便被其他窗口组件使用,因此如果肯定程序中不会在使用某个Image对象,就应该用Imagedispose()方法,立即释放掉Image

    类似情况的还有,font(字体),color(颜色)等.

  • 图像描述符(ImageDescriptor类)

由于Image存在的一些问题,Jface包提供了一个轻量级的ImageDescriptor类,ImageDescriptor并不存储图像本身,而是在程序需要时,才会创建图像,并且有些界面组件也只接受ImageDescriptor做参数来设置图像。
    ImageDescriptor是一个抽象类(abstract),所以它不能用new的方式来创建。下面介绍ImageDescriptor的两种静态方法createFromFilecreateFromURL来生成图像描述符的方法。
    1CreateFromFile方法
ImageDescriptor imageDesc = ImageDescriptor. CreateFromFile(abc.class,”src/275.jpg”)
    此句指当要创建图像时,会通过abc.class类所在目录下的src子目录来加载275.jpg,此时imageDesc只是包含了指向275.jpg的信息。还没有真正加载图片,abc.class这个参数可以是这个项目中的其他类,甚至是写这个语句的类也可以。(注意实际运用时候275.jsp放在abc.java类所在目录下。)
    2. createFromURL方法
    URL url = new URL(“file://E://src//275.jpg”);
    ImageDescriptor imageDesc = ImageDescriptor. createFromURL (url)
    3. 利用Eclipse自带的图像
    如果开发插件,由于插件是基于Eclipse环境运行的,所以还可以用Eclipse自带图像。
    ImageDescriptor imageDesc = WorkbenchImages.getImageDescriptor(
                                                  iWorkbenchGraphicConstants.IMG_ETOOL_HOME_NAV)
    4. ImageDescriptor总结
    ImageDescriptorimage有个好处,如果前者所指图像路径错误,则会自动用一个红色方块图像代替,而不会像后者那样弹出错误提示框。另外由ImageDescriptor也可得到image,方法是:Image image = imageDesc.createImage();

  • 图像注册表(ImageRegistry类)

  JFace提供了一个高速提供了一个能高速缓冲图像和图像描述符的图像注册表。它的设计思路是:先创建指向图像的图像描述符,然后将图像描述符加上一个键值添加到图像注册表中,这个键值和图像描述符一一对应的。当希望获得图像时,就可以用键值从注册表中取得。
   下面是一个图像注册表加值,取值,移除的方法。代码如下:

         /*
         * 创建一个图像注册表,因为程序需要共享图像注册表ImageRegistry,所以在实际项目中
         * 最好将ImageRegistry设置成静态变量(类变量)以使它可以被全局访问
         
*/

        ImageRegistry imageRegistry 
=   new  ImageRegistry();
        
// 创建一个图像描述符对象
        URL url  =   new  URL( " file:src/275.jpg " );
        ImageDescriptor imageDesc 
=  ImageDescriptor.createFromURL(url);
        
// 将图像描述符添加到图像注册表,键值为“refresh”
        imageRegistry.put( " refresh " , imageDesc); 
        
// 将图像从图像注册表取出
        Image image  =  imageRegistry.get( " refresh " );
        
// 从图像注册表取出图像描述符
        ImageDescriptor imageDesc2  =  imageRegistry.getDescriptor( " refresh " );
        
/*
         * 将图像从注册表里移除,如果有组件正在使用这个图像,图像依然会被释放掉,组件上就不会显示此图像.
         * 另外,如果注册表里没有这个键值“refresh”也不会显示错误或异常.
         
*/

        imageRegistry.remove(
" refresh " );
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值