关于插件中图标对象的获取

本文介绍了一种在Java插件中加载非GIF格式图标的方法,通过修改代码使得插件能够支持加载PNG等其他格式的图标文件。
默认情况下,插件只能取得gif格式的图片,有时候我们需要获取其他格式的图片,这里就需要自己来写了,最近从另外一个插件aptana下发现它在获取非gif格式图片的一些做法,值得参考
在需要使用图标的地方,需要这样写:
java 代码
  1. private static Image fIconFirefox = JSPlugin.getImage("icons/firefox_icon.png");  

JSPlugin中取得照片的相关代码要这样写:

java 代码
  1. /**  
  2.  * Returns an image descriptor for the image file at the given  
  3.  * plug-in relative path.  
  4.  *  
  5.  * @param path the path  
  6.  * @return the image descriptor  
  7.  */  
  8. public static ImageDescriptor getImageDescriptor(String path) {   
  9.     return AbstractUIPlugin.imageDescriptorFromPlugin("com.bstek.ide.js.editor", path); //$NON-NLS-1$   
  10. }   
  11.   
  12. private static Hashtable images = new Hashtable();   
  13.   
  14. /**  
  15.  * getImage  
  16.  *   
  17.  * @param path  
  18.  * @return Image  
  19.  */  
  20. public static Image getImage(String path)   
  21. {   
  22.     if (images.get(path) == null)   
  23.     {   
  24.         ImageDescriptor id = getImageDescriptor(path);   
  25.         if (id == null)   
  26.         {   
  27.             return null;   
  28.         }   
  29.   
  30.         Image i = id.createImage();   
  31.         images.put(path, i);   
  32.         return i;   
  33.     }   
  34.     else  
  35.     {   
  36.         return (Image) images.get(path);   
  37.     }   
  38. }  

 

最终读取图标对象在AbstractUIPlugin.imageDescriptorFromPlugin()方法中实现

java 代码
  1.   /**  
  2.    * Creates and returns a new image descriptor for an image file located  
  3.    * within the specified plug-in.  
  4.    * <p>  
  5.    * This is a convenience method that simply locates the image file in  
  6.    * within the plug-in (no image registries are involved). The path is  
  7.    * relative to the root of the plug-in, and takes into account files  
  8.    * coming from plug-in fragments. The path may include $arg$ elements.  
  9.    * However, the path must not have a leading "." or path separator.  
  10.    * Clients should use a path like "icons/mysample.gif" rather than   
  11.    * "./icons/mysample.gif" or "/icons/mysample.gif".  
  12.    * </p>  
  13.    *   
  14.    * @param pluginId the id of the plug-in containing the image file;   
  15.    * <code>null</code> is returned if the plug-in does not exist  
  16.    * @param imageFilePath the relative path of the image file, relative to the  
  17.    * root of the plug-in; the path must be legal  
  18.    * @return an image descriptor, or <code>null</code> if no image  
  19.    * could be found  
  20.    * @since 3.0  
  21.    */  
  22.   public static ImageDescriptor imageDescriptorFromPlugin(String pluginId,   
  23.           String imageFilePath) {   
  24.       if (pluginId == null || imageFilePath == null) {   
  25.           throw new IllegalArgumentException();   
  26.       }   
  27.   
  28.       // if the bundle is not ready then there is no image   
  29.       Bundle bundle = Platform.getBundle(pluginId);   
  30.       if (!BundleUtility.isReady(bundle)) {   
  31.     return null;   
  32. }   
  33.   
  34.       // look for the image (this will check both the plugin and fragment folders   
  35.       URL fullPathString = BundleUtility.find(bundle, imageFilePath);   
  36.       if (fullPathString == null) {   
  37.           try {   
  38.               fullPathString = new URL(imageFilePath);   
  39.           } catch (MalformedURLException e) {   
  40.               return null;   
  41.           }   
  42.       }   
  43.   
  44.       if (fullPathString == null) {   
  45.     return null;   
  46. }   
  47.       return ImageDescriptor.createFromURL(fullPathString);   
  48.   }  
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模与控制策略,结合Matlab代码与Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态与位置控制上具备更强的机动性与自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模与先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模与仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码与Simulink模型,逐步实现建模与控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性与适应性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值