繁体   English   中英

从 JPanel 中删除不特定的 JLabel

[英]Removing unspecific JLabel from JPanel

我目前正在 Java 中开发二十一点游戏。 我正在尝试使用 Swing 我现在被卡住了:我做了这个方法

private void addImage(String path) {

        JLabel imgLabel = new JLabel();
        imgLabel.setIcon(new ImageIcon(getClass().getResource(path)));
        add(imgLabel);
        display.pack();

    }

我想要一个重置按钮在一轮结束后重新启动,如何删除这些不特定的 JLabel? 我应该给他们一个标识符吗? 如果是怎么办? 提前致谢。

您可以通过创建一个包含所有标签的列表来做到这一点。

List<JLabel> labelsList = new ArrayList<JLabel>();

确保在 addImages 方法之外声明它,以便可以在其他方法中访问它。 然后,每次创建图像 label 时,您可以使用以下命令将其添加到列表中:

labelsList.add(imgLabel)

要删除卡片,您可以实现一个循环遍历标签列表并删除每个组件的重置方法,确保也将其从标签列表中删除:

public void resetLabels()
{
    for (JLabel label : labelsList) {
        remove(label);
        labelsList.remove(label);
    }
}

我认为了解collections在这种情况下会很有帮助,继续努力!

编辑:仔细查看后,您不应该像 go 通过循环一样修改列表,而是:

public void resetLabels()
{
    for (JLabel label : labelsList) {
        remove(label);
    }
    labelsList.clear();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM