我在使用 Netbeans 制作的 Java 应用程序中遇到了奇怪的问题。 这是一款内存卡游戏。 主类是一个 JFrame,它保存相同大小的面板。面板通过网格布局进行分割,每个单元格都包含一张卡片,另一个类设计有一个小面板和一个标签。 这就是设计。 主类的源代码承担了游戏的许多功能,游戏结束时发生的一个功能是第三个 JDialog 类,它也必须重置整个棋盘,当该功能使用方法removeAll()时,就会出现错误。它执行removeAll(),但只有在用户调整 JFrame 大小后,结果才会显示在屏幕上。必须有其他方法来自动刷新面板。我是否必须阅读完整的 JavaWiki 才能找到答案?
谢谢
最佳答案
在删除或添加组件后,调用容器上的revalidate()
,然后调用repaint()
。如果它是 JFrame 的 contentPane,那么您需要对其调用这些方法。
JPanel panel = (JPanel) jFrame.getContentPane();
panel.removeAll();
panel.revalidate();
panel.repaint();
revalidate()
方法告诉容器的布局管理器重新布局包含的所有组件。repaint()
方法向重绘管理器发送请求以重绘容器,从而消除窗口中的“脏”区域。
关于java - removeAll() 卡住游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20276773/