Question

Im essayant de peindre lentement un rectangle à l'aide de deux appels de méthode .fillrect avec appel Thread.sleep entre chaque méthode. Ce qui se passe est que la méthode de sommeil est appelé avant de se le rectangle est initialisé, il semble donc que l'rectange a déjà été peint. Je veux juste peindre une partie de la rectange, pause pendant cinq secondes, puis la peinture antother partie.

Voici mon 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);
 }

Merci

Était-ce utile?

La solution

Il est toujours une très mauvaise idée de faire un fil d'événement à bloc, quelle que soit la plate-forme.

Ce que vous devez faire est de définir des variables quelque part ce magasin l'étendue actuelle de la zone que vous voulez peindre. Mettre à jour ces variables sur un thread séparé (vous pouvez bloquer ce fil tout ce que vous voulez) et appeler la méthode repeindre () pour planifier une repeindre chaque fois que vous mettez à jour les variables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top