JPanel.removeAll()无法正常运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPanel.removeAll()无法正常运行相关的知识,希望对你有一定的参考价值。

所以我现在正在教自己使用GUI,我决定回到我创建的Go Fish游戏的代码,并在其中添加GUI。对于装有CPU播放器卡的面板,它会显示一些扑克牌的背面以指示CPU手的大小。

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

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

通过调试器,我可以看到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()方法。见Painting in AWT and Swing

以上是关于JPanel.removeAll()无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章