我和我的朋友决定开展一个在3个屏幕之间循环的纸牌游戏( Player1HandScreen,Player2HandScreen和FightScreen )。
一旦Player1从Player1HandScreen
选择了他们的卡片,Player1HandScreen
会导致Player2HandScreen
,其中Player2也会这样做。然后Player2HandScreen
导致FightScreen
比较两张牌并且一名玩家被宣布为该轮的获胜者。
我们遇到的问题是,一旦结束,我们想要清除Player1HandScreen
以及Player2HandScreen
一旦刷新我们的参数,我们就无法成功更新GUI。
我们已尝试使用removeAll()
,但我们无法将其转到repaint()
或validate()
。
我们也研究过super.paintComponents(g)
和updateUI()
,但两者都给我们留下了希望和梦想。
答案 0 :(得分:5)
如果你从Container中删除任何JComponent(只有一次),需要告诉Container,
removeAll()//or remove(JComponent)
revalidate();
repaint();
答案 1 :(得分:0)
尝试使用以下方式清除Jpanel:
paper.clearRect(0, 0, (int)panel.getSize().getWidth(), (int)panel.getSize().getHeight
纸张类似于:Graphics paper = panel.getGraphics();