我正在制作一个包含代表游戏地图的图标的网格,这个网格有时需要重新绘制。 我正在从基础工作中走出来。 这是我工作的一些代码
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”而不是之前初始化它?)
答案 0 :(得分:2)
与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()
构造的问题。令人惊讶的是,它被称为动态对象构造。