Mit Java JComponent repaint()

Ich Schreibe ein einfaches Spiel des Lebens-Programm in Java und habe ein wenig Mühe, es zu animieren. Ich habe eine JComponent Klasse namens LifeDraw, das zeigt ein raster von Pixeln, mit der folgende paint-Methode:

protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    for (int y = 0; y < lGrid.getHeight(); y++) {
        for (int x = 0; x < lGrid.getWidth(); x++) {
            if (lGrid.getCell(x,y) == 1) {
                g.setColor(Color.red);
                g.fillRect(x * lGrid.getSqSize(), y * lGrid.getSqSize(), lGrid.getSqSize(), lGrid.getSqSize());
            } else {
                g.setColor(Color.white);
                g.fillRect(x * lGrid.getSqSize(), y * lGrid.getSqSize(), lGrid.getSqSize(), lGrid.getSqSize());
            }
        }
    }
}

Dann eine andere Klasse LifeGrid, die eine Methode hat run(), die, wenn Sie aufgerufen wird, aktualisiert das raster von Pixeln, für eine generation und rufen Sie dann LifeDraw.repaint(). Jedoch, wenn ich versuche zu nennen run() in einer Schleife, die JComponent nicht streichen, bis die Schleife beendet ist, also alle, die jemals angezeigt wird, ist die erste generation und die Letzte. Ich dachte, es war wahrscheinlich nur die Aktualisierung zu schnell, Sie zu streichen, also versuchte ich mit Thread.sleep() zwischen den Iterationen hatte aber immer noch das gleiche problem. Theoretisch (oder zumindest ich hatte gehofft, es würde), sollte repaint der Komponente zwischen jeder iteration an und zeigt eine animation, in der die Pixel ändern.

Ich bin nicht so bewandert in Java-GUI, so dass jede Hilfe wäre wirklich zu schätzen. Hoffentlich habe ich es erklärt deutlich genug, lassen Sie mich wissen, ansonsten!

Schreibe einen Kommentar