removeAll()冻结游戏

时间:2013-11-29 00:45:28

标签: java swing jframe jpanel removeall

Î在用Netbeans制作的Java应用程序中遇到了奇怪的问题。 这是一款记忆卡游戏。 主类是一个JFrame,它保持àpanel相同的大小。面板细分为网格布局,每个单元格保持à卡,另一个类设计有à小面板和à标签。 这就是设计。 主类的源代码为游戏提供了许多功能,当游戏结束时发生了第三个JDialog类,当函数使用方法removeAll()时,还必须重置整个棋盘。它确实removeAll()但结果仅在用户调整JFrame大小时才出现在屏幕上。必须有另一种方法来自动刷新面板。我是否必须阅读完整的JavaWiki才能找到答案?

谢谢

1 个答案:

答案 0 :(得分:3)

在删除或添加组件后,在容器上调用revalidate()然后调用repaint()。如果它是JFrame的contentPane,那么你需要在它上面调用这些方法。

JPanel panel = (JPanel) jFrame.getContentPane();
panel.removeAll();
panel.revalidate();
panel.repaint();
  • revalidate()方法告诉容器的布局管理器重新布局包含的所有组件。
  • repaint()方法向重绘管理器发送请求以重新绘制容器,该容器应该清除“脏”区域的窗口。