【问题标题】:Basic Java Swing - adding JLabels with icons at runtimeBasic Java Swing - 在运行时添加带有图标的 JLabels
【发布时间】:2013-04-11 23:17:45
【问题描述】:

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

    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)

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

(在单独的说明中,这种对象构造称为什么,您只是动态地“添加新的 JLabel”而不是之前对其进行初始化?)

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

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

    【讨论】:

    • 啊哈,谁能想到它会被如此简单地命名!谢谢,这已经奏效了。
    • 我很高兴能提供帮助 :) 你能接受这个作为答案吗?
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2014-02-14
    • 2016-04-30
    • 2012-07-03
    相关资源
    最近更新 更多