Get rid of getMinimumSize and getPreferredSize. You don't need that.
GridLayout, like many other layouts has a facility where you can control the gap/space between components. Check out GridLayout#setHgap and setVgap methods. You will also find a corresponding constructor.
As a rule of the thumb try and avoid explicitly tweaking the dimensions of the child component. Always try and tweak the layout.