我和我的朋友决定从事一种纸牌游戏,该游戏在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();