Frage

Ich versuche, ein Rechteck mit zwei Aufrufen der .FillRect -Methode mit Thread.Sleep -Anruf zwischen jeder Methode langsam zu malen. Was passiert, ist, dass die Schlafmethode aufgerufen wird, bevor das Rechteck initialisiert wird. Es scheint, dass das Rektange bereits gemalt wurde. Ich möchte nur einen Teil des Rektanges malen, fünf Sekunden lang innehalten und dann einen anderen Teil malen.

Hier ist mein Code -

public void paint(Graphics g, int w, int h) {
    g.drawRect(0, 0, w - 1, h - 1);
    g.fillRect(0, 0, 10, h-1);

   try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

    g.fillRect(0, 0, 50, h-1);
 }

Vielen Dank

War es hilfreich?

Lösung

Es ist immer eine sehr schlechte Idee, einen Ereignis -Thread zu blockieren, unabhängig von der Plattform.

Was Sie tun sollten, ist die Definition von Variablen irgendwo, die das aktuelle Ausmaß des Gebiets speichern, den Sie bemalten möchten. Aktualisieren Sie diese Variablen in einem separaten Thread (Sie können diesen Thread blockieren, was Sie möchten) und rufen Sie die Repaint () -Methode an, um ein Repaint zu planen, wenn Sie die Variablen aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top