for(int i=0;i<choices.length;i++)
{ items[i]=new ImageIcon(".\\images\\"+names[i]+".gif");
  choices[i]=new JButton(items[i]);
}".\\images\\"存放图象图标的路径
choices[]是按钮数组,用来存储带名称的按钮(name[]),
利用上面的方法把图象图标导入按钮里,编译运行都没问题,可把代码打包成jar后就发现一个问题,就是图象图标的显示必须依赖于路径".\\images\\",即是如果把其删除,或把jar文件移植到别处,图象图标就不能显示了。
请问大家有没有解决的方法?

解决方案 »

  1.   

    在Jar包中的图片不能按你这种方法读, 试试下面的:for(int i=0;i <choices.length;i++)
    { items[i]=new ImageIcon(this.getClassLoader().getResource(".\\images\\"+names[i]+".gif"));
      choices[i]=new JButton(items[i]);
    }
      

  2.   

    这个方法我也试过了,在命令行里运行正常,可打包成jar时运行却没反应(双击运行什么显示也没有,进程也没显示),不知什么问题了?我看过一些资料,有人用对图片进行编码的方法处理,可我不知具体怎么做。
      

  3.   

    问题解决了,原来按照getClass()getClassLoader().getResource("")方法是可行的,但图片不能是".gif"格式的,换成".jpg"格式问题就解决。".gif"是动态图象,估计有问题。多谢2楼的提示~