Also, add all components
before, not after, you invoke
setVisible(true).
You do realise that you have two redundant cllas to
setSize(...) ... or don't you? Or was that a bad workaround to cause the GUI to revalidate itself?
You could also benefit from the Oracle tutorial on
Concurrency in Swing. What you need to know right now is that all Swing constructors and methods are to be invoked on the EDT, with the exception of those specifically documented as
thread safe (and for that, refer to the documentation for
Java 7 or later, as earlier versions wrongly documented certain methods as thread safe but in fact they never were).