Don't use a null layout. Swing was designed to be used with layout managers.
From what I can tell in you code you are adding a row of 3 components to a panel every time you click a button.
This can easily be down by using layout managers. Maybe start with a main panel that uses a vertical BoxLayout. Then when you click a button you create a panel that uses a horizontal BoxLayout and add your 3 components to this panel. Then add this panel to the main panel.
Then you need to use:
mainPanel.revalidate();
mainPanel.repaint();
To make sure the layout manager is invoked and the components are repainted. Then the layout manager will manage the preferred size for you.