If you rely on a layout manager to layout the contents, (which appears to be the case here), call pack() on the JFrame.
Add all components to the JFrame before setting the frame visible. (...and...