0

在使用 Netbeans 制作的 Java 应用程序中遇到了一个奇怪的问题。这是一个记忆卡游戏。主类是一个 JFrame,它拥有相同大小的面板。面板被细分为网格布局,每个单元格都有一个卡片,另一个类设计有一个小面板和一个标签。那是为了设计。主类的源代码承载了很多游戏的功能,游戏结束时出现的第三个JDialog类,也必须重置整个棋盘并出现Bug,该函数使用方法removeAll()。它确实 removeAll() 但结果仅在用户调整 JFrame 大小后才会出现在屏幕上。必须有其他方法来自动刷新面板。我是否必须阅读完整的 JavaWiki 才能找到答案?

谢谢

4

1 回答 1

3

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

JPanel panel = (JPanel) jFrame.getContentPane();
panel.removeAll();
panel.revalidate();
panel.repaint();
  • revalidate()方法告诉容器的布局管理器重新布局包含的所有组件。
  • repaint()方法向重绘管理器发送一个请求,以重绘应该清除窗口“脏”区域的容器。
于 2013-11-29T00:48:53.177 回答