Chame
t.start()
para iniciar um novo Thread
, chamando Thread#run
não faz nada além de chamar o run
método do Thread
dentro do mesmo contexto de thread... Dito isto, o Swing não é thread-safe, o Swing requer que todas as atualizações na interface do usuário sejam feitas dentro do contexto do Event Dispatching Thread. Em vez de usar um
Thread
, você deve considerar usar um SwingWorker
, que permite executar tarefas de longa duração em um thread em segundo plano, mas que fornece publish
fácil de usar /process
métodos e chamadas done
quando ele for concluído, que são executados no contexto do EDT para você. Consulte Threads de trabalho e SwingWorker para mais detalhes