Appelez t.start() pour démarrer un nouveau Thread , en appelant Thread#run ne fait rien de plus puis appelle le run méthode du Thread dans le même contexte de thread...
Cela dit, Swing n'est pas thread-safe, Swing exige que toutes les mises à jour de l'interface utilisateur soient effectuées dans le contexte du thread de distribution d'événements. Au lieu d'utiliser un Thread , vous devriez envisager d'utiliser un SwingWorker , qui vous permet d'exécuter des tâches longues dans un thread d'arrière-plan, mais qui fournit une publish facile à utiliser /process méthodes et appels done lorsqu'il se termine, qui sont exécutés dans le contexte de l'EDT pour vous.
Voir Threads de travail et SwingWorker pour plus de détails