JPanel repaint()调用不起作用

时间:2013-03-08 18:28:17

标签: java swing jpanel

我觉得这个问题的解决方案很简单,我只是忽略了一些愚蠢的东西,但我似乎无法使我的一个JPanels的repaint()方法起作用。有问题的JPanel是另一个类的成员对象,它处理绘制到JPanel的所有逻辑,然而,每当我在我的线程中调用repaint()时,我看不到任何绘制,也没有看到我的系统。 out.println()调用,我放在那里进行调试。为方便起见,我把文件放在Github上。以下是我认为可能与它有关的三个文件。如果需要,你可以随时查看其他人。

SageLife.java

LifeFramework.java

Grid.java

之前我已经创建了很多JPanel并且很少遇到这个问题,所以我不确定是什么导致了它。

1 个答案:

答案 0 :(得分:3)

您在paintComponents paintComponent覆盖Grid而不是JPanel。这并不遵循Swing的油漆链机制。

@Override
public void paintComponents(Graphics g) {
    super.paintComponents(g);

注意:为了处理Swing中的UI更新,请始终使用Swing Timer而不是Thread