【问题标题】:removeAll() freeze the gameremoveAll() 冻结游戏
【发布时间】:2013-12-15 02:52:30
【问题描述】:

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

谢谢

【问题讨论】:

标签: java swing jframe jpanel removeall


【解决方案1】:

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

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

【讨论】:

  • 对不起,我没有早点知道你的答案。这使它像铃声一样响起!谢谢。
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 2015-11-19
相关资源
最近更新 更多