2013-04-18 13 views
0

我正在制作一个包含代表游戏地图的图标的网格,并且此网格有时需要重绘。 我正在努力从基础知识。 下面是一些代码,我得到了工作基本Java Swing - 在运行时用图标添加JLabels

int i = 1; 
    while (i < 50) { 
      pnlMap.add(new JLabel(String.valueOf(i))); 
     i += 1; 
    } 

现在我想的JLabel显示图标,但我想不出对参数语法上pnl.add()

我想它像

pnlMap.add(new JLabel("").setIcon(new ImageIcon(ClientGUI.class .getResource("/resources/wall.jpg"))));

正如你所猜测的,这是行不通的。错误:The method add(Component) in the type Container is not applicable for the arguments (void)

如何获取上面的代码添加带图标的JLabel?

(在一个单独的说明,这是什么样的对象构造的叫,你只是“添加新的JLabel”动态而不是之前初始化呢?)

回答

2

不同构造的JLabelsetIcon功能没有按不会退回任何东西(或返回void)。这意味着你的代码看起来有点像这样:

pnlMap.add(void); 

这就是为什么错误被抛出的原因。

因此,只需稍微修改一下代码即可使循环正常工作。

int i = 1; 
while (i < 50) { 
    JLabel label = new JLabel(String.valueOf(i)); 
    label.setIcon(new ImageIcon(ClientGUI.class .getResource("/resources/wall.jpg"))); 
    pnlMap.add(label); 
    i += 1; 
} 

编辑: 在回答你关于new JLabel()建设在你的代码的问题。令人惊讶的是,它被称为动态对象构造。

+0

阿哈谁会想到它会被直截了当地命名!谢谢,这一直奏效。 – njl

+0

我很高兴我可以帮助:)你能接受这个答案吗? – Kezz101