就是setIcon的问题
String icon = "../image/1.gif";
button.setIcon(new ImageIcon(getClass()
.getResource(icon)));
在eclispe下运行没有问题
打成jar包就运行出错,null我又试了一个最简单的例子
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t= new Test();
System.out.println(t.getClass().getClassLoader().getResource("."));
}}
在eclipse打印是一个目录
打成jar包后运行就是null
怎么回事啊?
在eclipse下打开的文件,设置的图标,都是目录下的文件,你写成“。。/”,“/”什么都能找的到,打成jar包以后,只有classpath了,这种方式是不行的,所以上面提的test例子
打印为null,因为“/”在classpath下什么都不能表示,必须写成“/a/b/c.gif”。特别提出的是因为是classpath,里面的所有字母大小写都区分,在eclispe下不区分,打成包区分(我在这上面浪费了好多时间)。
举一个例子:
你的图标文件为a/b/c/d.gif
调用图标文件的class在a/b/e.class
在eclispe下你怎么写都可以比如 getClass().getResource(“./d.gif”) ;getClass().getResource(“d.gif”);getClass().getResource(“/a/b/c/d.gif”)
但是为了保证能在jar下找的到必须采用最后一种方式getClass().getResource(“/a/b/c/d.gif”)