SWT RCP图片显示问题

时间:2023-01-20 16:02:52

本人是从SWT一路走到RCP的,自我感觉RCP工程很多方面和SWT/JFace的开发不同。以ImageDescriptor讲解一下: 在SWT/JFace的java项目中,获取一个图像描述符的常用方法如下: public ImageDescriptor getImageDesc(String fileName) { try { URL url = new URL("file:icons/"+fileName); return ImageDescriptor.createFromURL(url); } catch(MalformedURLException mue) { mue.printStackTrace(); } return null; } 但是这个方法在RCP开发中根本图片根本就不能正常显示,即使创建一个SWT的shell在在上面放一个ToolBar加入Action测试正确,但是RCP程序中就是不能够正常显示。 原因如下: 原因是这里不识别java项目的主目录。 解决方法: 1,使用createFromFile()这个方法,而不能够使用createFromURL()。如: ImageDescriptor imageDesc = ImageDescriptor.createFromFile(ImageFactory.class, location);但是这个和类ImageFactory.class在同一个目录下的文件夹必须命名为app-icons这样的格式,不然就会看起来是一个包而不是文件夹。 缺点:icons目录过深! 2,另一种解决方法就是AbstractUIPlugin.imageDescriptorFromPlugin("crmSample", location);这例AbstractUIPlugin.imageDescriptorFromPlugin(plugin的id, 文件的位置)! 这个问题弄得我一直很混乱,项目也失去了良好的结构:对XML和程序中用到的icons放到了两个不同的文件夹下了。现在我解决了,把自己心得贴出来,希望社区的兄弟们不要再经历我的痛苦了。