0

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

SageLife.java

LifeFramework.java

网格.java

我之前创建了很多 JPanel 并且很少遇到这个问题,所以我只是不确定是什么原因造成的。

4

1 回答 1

3

你是压倒一切的paintComponents,而不是paintComponent在你的Grid JPanel. 这不遵循 Swing 的绘制链机制。

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

注意:始终使用Swing Timer overThread来处理 Swing 中的 UI 更新。

于 2013-03-08T18:32:11.153 回答