在用Netbeans制作的Java应用程序中,有一个奇怪的问题。这是一个记忆卡游戏。主类是一个JFrame,它持有相同大小的à面板。该小组被细分为一个网格布局,每个单元格持有卡,另一个类设计了小面板和à标签。那是设计用的。主类的源包含游戏的许多函数,以及游戏结束时发生的函数,第三个JDialog类也必须重置整个板,当函数使用removeAll()方法时,就会出现Bug。它执行removeAll(),但结果仅在用户调整JFrame大小后才会出现在屏幕上。必须有其他方法来自动刷新面板。我需要阅读完整的JavaWiki才能找到答案吗?
谢谢
发布于 2013-11-29 00:48:53
在将组件移除或添加到容器上后,调用revalidate(),然后调用容器上的repaint()。如果是JFrame的contentPane,那么您需要在上面调用这些方法。
JPanel panel = (JPanel) jFrame.getContentPane();
panel.removeAll();
panel.revalidate();
panel.repaint();revalidate()方法告诉容器的布局管理器重新布局所有包含的组件。repaint()方法向重绘管理器发送一个请求,以重新绘制容器,该容器应该删除窗口中的“脏”区域。https://stackoverflow.com/questions/20276773
复制相似问题