Почему необходимо установить код обновления графического интерфейса пользователя в SwingUtilities.invokeLater()?
Почему бы не поработать с самим собой? Почему вызывающий абонент должен заботиться о том, как swing обрабатывает обновления пользовательского интерфейса?