0

これに対する解決策は非常に単純で、愚かなことを見落としているように感じますが、私のJPanelsの1つのrepaint()メソッドを機能させることができないようです。問題のJPanelは、JPanelに描画されるものの背後にあるすべてのロジックを処理する別のクラスのメンバーオブジェクトですが、スレッドでrepaint()を呼び出すと、描画されたものもシステムも表示されません。 out.println()呼び出し。これは、デバッグ目的でそこに配置しました。便宜上、ファイルをGithubに配置しました。これが私がそれと関係があるかもしれないと思う3つのファイルです。必要に応じて、いつでも他の人を見ることができます。

SageLife.java

LifeFramework.java

Grid.java

私は以前にたくさんのJPanelを作成しましたが、この問題に遭遇することはめったにないので、何が原因なのかよくわかりません。

4

1 に答える 1

3

paintComponentsではなく、オーバーライドpaintComponentしていますGrid JPanel。これは、Swingのペイントチェーンメカ​​ニズムには従いません。

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

注: SwingでUIの更新を処理するには、常にSwingタイマーを使用してください。Thread

于 2013-03-08T18:32:11.153 に答える