这让我疯了! 我使用了连接和格式,当生成的字符串与正确的路径匹配时,循环会抛出get go的异常。
发生了什么事?
ImageIcon thisWorks= new ImageIcon(testview.class.getResource("/led_images/"+1+"_off.png"));
for(int i = 1; i <= 10; i++)
{
String on = String.format("/led_images/%d_on.png",i);
String off = String.format("/led_images/%d_off.png",i);
ledIcons.put( i+"_off", new ImageIcon(testview.class.getResource(off)));
ledIcons.put( i+"_on", new ImageIcon(testview.class.getResource(on)));
}
编辑:
我是否正确使用Map?
这是一个Map<String,ImageIcon>
。
EDIT2: 是的,我想我正在错误地使用地图。
我声明它是这样的:
public Map< String, ImageIcon> ledIcons;
它是循环内的空值。 所以我猜它不像c ++那么?
EDIT3: 是的,没关系这个问题,我没有正确地初始化这个领域,道歉。
答案 0 :(得分:3)
如果thisWorks
有效,那么显然"/led_images/1_off.png"
存在。如果循环中的图像有例外,那么可能是
/led_images/2_off.png
/led_images/2_off.png
/led_images/3_off.png
...
/led_images/10_off.png
/led_images/1_on.png
/led_images/2_on.png
/led_images/3_on.png
...
/led_images/10_on.png
缺失。
编辑:我使用的地图不正确吗?这是一张地图。
不,这对我来说很好看。 (除非您以后检索有问题。)
答案 1 :(得分:2)
我猜测领先的斜线是问题;你可能想要一个相对路径。请参阅文档:
http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String)
答案 2 :(得分:2)
初始化字段:
public Map< String, ImageIcon> ledIcons = new HashMap< String, ImageIcon>();