0

我正在制作一个包含代表游戏地图的图标的网格,有时需要重新绘制这个网格。我正在从基础开始。这是我开始工作的一些代码

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

现在我希望 JLabels 显示图标,但我无法弄清楚参数的语法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)

如何获取上述代码以添加带有图标的 JLabels?

(另外说明,这种对象构造叫什么,你只是动态地“添加新的 JLabel”而不是之前初始化它?)

4

1 回答 1

2

与 a 的构造函数不同JLabel,该setIcon函数不返回任何内容(或返回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()代码构造的问题。令人惊讶的是,它被称为动态对象构造。

于 2013-04-18T17:47:06.983 回答