OK. Now I see what your problem is. Method paint() is not an appropriate place to do your invokeLater() call.
Method paint() may be called several times. Actually, it's called whenever a portion of the screen needs to be repainted.
You may want to add your later invocation in a listener's code or upon a dialog close, but that should never be called from method paint().
Moreover, method paint() itself is always called from Event Dispatch Thread, so doing invokeLater there is pretty much redundant if you want to insure it's called from EDT.
If you show us methods, which you wrote to start up the application, we might be able to point you to where exactly you need to do your code invocation.