您现在的位置是:首页 >

qt怎么删除资源文件 技巧:如何在Applet中引用jar中的资源文件

火烧 2023-03-01 06:18:20 1042
技巧:如何在A let中引用jar中的资源文件   如果想要做一个比较漂亮的A let让人家使用 一定会加上很多资源 比如图片或者声音文件什么的          u 提供了一个有用的工具 jar 这
qt怎么删除资源文件 技巧:如何在Applet中引用jar中的资源文件

技巧:如何在Applet中引用jar中的资源文件  

  如果想要做一个比较漂亮的Applet让人家使用 一定会加上很多资源 比如图片或者声音文件什么的         sun提供了一个有用的工具 jar 这个工具可以把这些资源文件合在一个文件里 避免频繁的 request     而且下载的jar文件可以被缓存 很爽吧         但是如何正确引用jar中的资源呢?        比如我们打算显示一个图片按钮 图片相对路径为 /img/logo gif 你可以自己随便找一个gif图片         让我们来看看我们想当然的做法             import java awt *;    import java awt event *;        import javax swing *;        public class ImageButtonApplet extends JApplet    {    private String path = /img/logo gif ;    private ImageIcon logoButtonIcon = new ImageIcon(path);        /**Initialize the applet*/    public void init()    {    try    {    if (logoButtonIcon == null)    throw new Exception( cannot get the image! );        JButton iButton = new JButton(logoButtonIcon);        Container cp = this getContentPane();    cp add(iButton);    }    catch (Exception e)    {    e printStackTrace();    }    }    }        这样子编译之后 把ImageButtonApplet class和logo gif保持相对路径打进jar里面 对应的HTML页面代码为 由于使用了Swing     经过HTMLConverter预处理之后 本以为能够一举成功 打开页面却发现 抛出异常     java security AccessControlException: access denied (java io FilePermission /img/logo gif read)        这件事情也郁闷了我很久 反复试验 不管path相对路径还是什么 都不能顺利实现         后来我研究了jdk自带的demo 发现demo在引用资源的时候 采用这样的方法 getClass() getResource(String sourceName);        getClass()是Object的方法 返回一个对象的运行时类型 即CLass对象         原来Class对象有getResource方法 在API文档中就是这样写的         public URL getResource(String name)        Finds a resource with a given name This method returns null if no resource with this name is found The rules for searching resources associated with a given class are implemented by the * defining class loader of the class         This method delegates the call to its class loader after making these changes to the resource name: if the resource name starts with / it is unchanged; otherwise the package name is prepended to the resource name after converting to / If this object was loaded by the bootstrap loader the call is delegated to ClassLoader getSystemResource         Parameters:    name name of the desired resource        Returns:    a URL object         Since:     JDK         See Also:     ClassLoader        如法炮制 我把原来的        private ImageIcon logoButtonIcon = new ImageIcon(path);        改成        private ImageIcon logoButtonIcon = new ImageIcon(getClass() getResource(path));        编译 jar run 成功 无论是本机打开还是放到服务器中 都没有问题了         这就是在Applet中引用jar中资源文件的KEY!    lishixinzhi/Article/program/Java/hx/201311/26330  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码