Anrop t.start() för att starta en ny Thread , anropar Thread#run gör inget mer än anropar run metod för Thread inom samma trådsammanhang...
Med det sagt, Swing är inte trådsäkert, Swing kräver att alla uppdateringar av användargränssnittet görs inom ramen för Event Dispatching Thread. Istället för att använda en Thread , bör du överväga att använda en SwingWorker , som låter dig utföra långvariga uppgifter i en bakgrundstråd, men som ger lättanvänd publish /process metoder och anrop done när den är klar, vilka exekveras inom ramen för EDT åt dig.
Se Worker Threads and SwingWorker för mer information