java - removeAll() 卡住游戏

标签 java swing jframe jpanel removeall

我在使用 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/

相关文章:

java - 我很难从我的 sin x 麦克劳林级数中获得准确的输出

Java JPanel 绘制矩形drawRect();接下来该做什么,或者 Java 的哪个组件更适合?

java - 如何将 Swing 组件添加到 SWT 中?

java - 如何使 JRadioButtons 更改属性(JFrame)?

java - JMenuBar 可见性困惑

Java在获取三角形数字序列时编译错误

java - jsf和java中同步方法的最佳实践

java - Ansible 以 "nohup"终止我的应用程序

java - 如何让 JButton 在再次单击时重复其操作?

java - 访问 JFrame 组件