Задачи таймера выполняются в потоке Dispatching Event, поэтому, пока ваша задача запущена, никакое другое событие swing не может произойти, и ваш gui замерзнет. Вы должны сделать отдельный поток для такой длинной задачи или использовать SwingWorker.
Подробнее см. этот .