Wywołaj t.start() aby rozpocząć nowy Thread , wywołując Thread#run nie robi nic więcej niż wywołuje run metoda Thread w tym samym kontekście wątku...
Powiedziawszy to, Swing nie jest bezpieczny dla wątków, Swing wymaga, aby wszystkie aktualizacje interfejsu użytkownika były dokonywane w kontekście wątku wysyłania zdarzeń. Zamiast używać Thread , powinieneś rozważyć użycie SwingWorker , który pozwala na wykonywanie długotrwałych zadań w wątku w tle, ale który zapewnia łatwy w użyciu publish /process metody i wywołania done po zakończeniu, które są wykonywane w kontekście EDT dla Ciebie.
Zobacz Wątki robocze i SwingWorker po więcej szczegółów