The problem is that the BoxLayout respects the maximum size of the components. Since panels don't have a maximum size each panel increases in height to take up the available space.
Another solution is to determine the maximum size of each panel after you add the components to the panel:
pnlName.setMaximumSize( pnlName.getPreferredSize() );
pnlSurname.setMaximumSize( pnlSurname.getPreferredSize() );
pnlAge.setMaximumSize( pnlAge.getPreferredSize() );