[英]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.