java - 基本 Java Swing - 在运行时添加带有图标的 JLabels

标签 java swing user-interface

我正在制作一个包含代表游戏 map 的图标的网格,并且该网格有时需要重新绘制。 我正在从基础开始努力。 这是我可以使用的一些代码

    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"))));

你可以猜到这是行不通的。错误:Container 类型中的方法 add(Component) 不适用于参数 (void)

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

(另外,这种对象构造叫什么,您只需动态“添加新的 JLabel”而不是之前对其进行初始化?)

最佳答案

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() 构造的问题。令人惊讶的是,它被称为动态对象构造。

关于java - 基本 Java Swing - 在运行时添加带有图标的 JLabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16089776/

相关文章:

android - 在 while 循环中更新 Android-UI 的最佳方式

c# - 如何从 WinForms 迁移到 WPF

java - 从这个 .proto 文件生成代码后,这个特定的函数是如何产生的?

java - 旧 JFrame Activity ,而新框架处于 Activity 状态

java - 使用循环在 Java 中绘制等腰三角形

java - 可以禁用 swing 中的进度条吗?

java - 是否可以使用具有边框但没有标题栏的 swing 在 Java 中创建一个窗口?

java - 在 JTextArea 下面添加按钮

java - 用户字符串输入。计数字符

java - NetBeans jFrames不起作用(仅显示加载中……)