Shell 的 setImage 方法设置控制菜单图标。我先用 getResource 方法获取 URL,结果把程序连同图片资源一起打包后始终无法识别出路径,但是直接运行主类 class 是可以识别路径的,并且 ico 格式是支持的。然后我换了一种办法,用 getResourceAsStream 方法获取了流,结果可以找到包内的文件了。但是 ico 格式它提示错误:org.eclipse.swt.SWTException: Invalid image,换一个 png 的图片就没问题。然后我用 Windows 照片查看器 看了一下,发现那个 ico 其实包含了十几张图片,我实际需要的只是其中的一张。我想大概是读入流的时候出了问题。我就应该要把 ico 拆解开来,该如何弄?或者有没有更直接的办法?

解决方案 »

  1.   

    恐怕是不行的了,你还是得到每一个ico吧。
      

  2.   

    同样的问题啊。
    this.setImageDescriptor(ImageDescriptor.createFromFile(this.getClass(), icons[index]));//这样没问题ImageData imageData = new ImageData(this.getClass().getResourceAsStream(icons[index]));//准备用这个读,再变一下大小,结果报错!
    this.setImageDescriptor(imageData);不行就先转成png吧
    http://blogs.bytecode.com.au/glen/2005/04/15/converting-ico-files-for-use-in-swt-apps.html
      

  3.   

    this.setImageDescriptor(ImageDescriptor.createFromImageData(imageData));
      

  4.   

    http://mydown.yesky.com/soft/multimedia/formattransfer/493/417993.shtml  转换小工具