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()无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章

[转]IE9.0或者360下js(JavaScriptjQuery)不能正确执行(加载),按F12后执行正常;Firefox下ajax的success返回数据data(jsonstring)无法获(代

Autodesk 的所有软件都 无法打开

垃圾分代回收机制

无法定义使用'dynamic'的类或成员,因为编译器需要输入'System.Runtime.CompilerServices.DynamicAttribute'类型(代

MatlabMatlab2017 使用Microsoft Visual studio做编译提示“fatal error C1083: 无法打开包括文件: “stdlib.h”: No such f(代

任务':app:transformClassesWithDexBuilderForDebugAndroidTest'的执行失败,java.lang.RuntimeException(代