Проблема в том, что ваш обработчик событий (здесь ActionListener) вызывается в потоке диспетчеризации событий AWT (EDT).
Этот поток является тем же потоком, который обрабатывает все взаимодействие с пользователем, а также перерисовкуваше приложение.Если вы не скоро вернетесь из прослушивателя действий, ваше приложение будет казаться замороженным.
Не делайте этого, вместо этого используйте новый поток.(Для обновления GUI перезвоните в EDT, используя EventQueue.invokeLater (или SwingUtilities.invokeLater, это то же самое).)