Calling pack()
on a window will size it based on the preferredSize of its containing components. It will be as small as possible but taking into account the preferredSize and layout of its components.
If you just randomly use frame.setSize()
, then the components added to the content pane will expand/contract to fit the space available, which means the preferred size of each component may be overridden.
setSize()
sets the size of the component and setPreferredSize
sets the preferred size.The Layoutmanager will try to arrange that much space for your component.
It depends on whether you're using a layout manager or not ...
See Java: Difference between the setPreferredSize() and setSize() methods in components