0

我正在尝试快速执行以下操作:

lblNewLabel.setIcon(new ImageIcon(ItemDialog.class.getResource("/items/" + items.get(seed).getImage())));

但是我在上面的行中得到了空指针异常。

当我以下列方式使用它时,该程序运行良好。

lblNewLabel.setIcon(new ImageIcon(ItemDialog.class.getResource("/items/item10312344.jpeg")));

有用。

编辑:种子是索引号(在这种情况下为 1)。items.get(1).getImage() 保存 item10312344.jpeg 的值,但如上所述我得到一个空异常。但是如果手动输入它,它可以工作

我需要做些什么才能通过从项目列表中获取它来使它不会得到空异常?

4

2 回答 2

1

在调用“getImage”之前尝试验证对象

//FIRST OF ALL: Make sure "items" is not null
if(items != null && items.get(seed) != null){
  ItemDialog itemDialog = ItemDialog.class.getResource("/items/" + items.get(seed).getImage())
  if(itemDialog != null)
  lblNewLabel.setIcon(new ImageIcon(itemDialog));
}

/*I am not sure about of which type is the object items is carrying, but a more
decent approach would be*/

if(items != null){
  "ObjectThatItemsIsCarrying" obj = items.get(seed);
  //Checking if you got the image name
  if(obj != null) 
  ItemDialog itemDialog = ItemDialog.class.getResource("/items/" + obj.getImage());
  //Cheking if you got the image
  if(itemDialog != null)
  lblNewLabel.setIcon(new ImageIcon(itemDialog));
}
于 2013-06-06T03:25:47.473 回答
0

将路径放在字符串中,并在 getResource 方法中使用该字符串。

String path = "/items/" + item.get(seed).getImage();
于 2013-06-06T03:15:20.293 回答