Il ne faut jamais directement appeler la méthode paint d'un composant (sauf pour le dessiner sur une image ou un élément extérieur). La méthode repaint est là pour indiquer à Swing qu'un composant doit être redessiné, Swing choisissant le moment idoine pour ce faire.
Dans ton cas le problème vient probablement d'une histoire de non respect de l'EDT (à savoir le Thread Graphique). En effet toutes les opérations de modification d'un composant graphique doivent être réalisées dans l'EDT et non depuis un autre Thread. Si l'on se trouve dans un Thread autre que l'EDT et que l'on veut modifier un composant Swing, il faut englober le code modifiant les composants graphiques (et uniquement les composants graphiques, les calculs et requêtes doivent rester dans le Thread externe) dans un Runnable que l'on passe en paramètre à la méthode statique
SwingUtilities.invokerLater(Runnable r);
.
Cf le tutoriel suivant: http://gfx.developpez.com/tutoriel/j...ing-threading/ qui est une lecture obligatoire pour développeur touchant à Swing
Partager