JPanel.removeAll() 无法正常工作



所以我目前正在自学使用GUI,我决定回到我创建的Go Fish游戏的代码,并向其添加GUI。对于保存 CPU 玩家牌的面板,它显示一些扑克牌的背面以指示 CPU 手的大小。

每当 CPU 的手牌大小发生变化时,都会调用我的方法updateComputerCards来调整屏幕上显示的卡片数量。它通过为我的面板调用removeAll()方法来执行此操作,然后继续重新添加适当数量的卡片图像。

不过,我的问题是,当游戏刚开始时,并且在 CPU 的手中找到匹配项时,该方法按预期工作,并且出现的牌数量会减少。但是,每次随后调用该方法时,GUI 中没有任何变化,尽管 CPU 有一手不同大小的牌。

通过调试器,我可以看到removeAll()方法由于某种原因没有删除面板上的所有组件,即使它在第一次调用时成功这样做而没有问题。谁能在这里帮我?

public void updateComputerCards(ArrayList<Integer> hand) {
labelPanel.removeAll();
for (int i = 0; i < hand.size(); i++) {
labelPanel.add(computerCardLabels.get(i));
labelPanel.add(b.createHorizontalStrut(10));
}
}

您需要在进行更改后调用 repaint(( 方法。 请参阅在 AWT 和 Swing 中绘画。

最新更新