Not putting GUI code on the GUI thread is like driving the car with no bonnet windshield seatbelt or protection into a wall of 5ft spikes and expecting to come out alive.
Here is a 4 part set of blog posts that will explain:
http://www.javaswingcomponents.com/blog ... tch-thread
http://www.javaswingcomponents.com/blog ... e-pitfalls
http://www.javaswingcomponents.com/blog ... ing-worker
http://www.javaswingcomponents.com/blog ... nlisteners
There's a reason AFLobby had SwingWorker instances and runnable objects all over the GUI interfaces.
http://www.javaswingcomponents.com/blog ... ker-advice
What happens if you don't use the UI event thread to do UI work:
- Random race conditions
- Pitiful UI performance
- Deadlocks and mysterious crashes that throw no exceptions and are uber hard to reproduce
- Weird UI bugs that make no sense
Violating this golden rule is the reason most Java UIs are slow and buggy.