我和我的朋友决定从事一种纸牌游戏,该游戏在3个屏幕(Player1HandScreen,Player2HandScreen和FightScreen)之间循环。

一旦Player1从Player1HandScreen中选择了自己的牌,Player1HandScreen会导致Player2HandScreen,其中Player2也会这样做。然后Player2HandScreen导致FightScreen在这里比较两张牌,并宣布一名选手为该回合的赢家。

我们遇到的问题是,一旦回合结束,我们就想清除Player1HandScreen,并且一旦刷新参数,就要清除Player2HandScreen,我们将无法成功更新GUI。

我们已经尝试使用removeAll(),但无法将其提供给repaint()validate()

我们也研究了super.paintComponents(g)updateUI(),但都给我们留下了破碎的希望和梦想。

最佳答案

如果您从Container中删除任何JComponent(最后一次仅删除一次),则需要告知Container,

removeAll()//or remove(JComponent)
revalidate();
repaint();

09-25 21:05