Your GUI code is not being executed in the Event Dispatcher Thread. Sure, you enter the EDT. But then you launch another thread that does the GUI work.

Scratch that. You are creating the GUI in the EDT - the "new ui()" does that. The thread that will be "running" it will not do anything, since ui's run() method does absolutely nothing.
But this isn't your real code; for one, Server doesn't implement Runnable so line 6 of your Main class will not compile. PostRealCode.