It's better to add() all controls and conditionally hide them with setVisible(false), that way you still take advantage of the built-in destructor instead of having to work around it with lots of new/delete.