Concurrency in Swing. I suggest you read it. It tells you that you should do any GUI related work on the Event Dispatcher Thread (EDT), and should not perform any long-taking actions (like sleeping!) on the EDT.
In this case a javax.swing.Timer would work just as well as the ExecutorService.