Все зависит от того, как его собираются использовать. Если вы хотите переключаться между этими двумя панелями, используйте CardLayout. Если вы переходите от первого ко второму только один раз и (и не возвращаетесь), я бы использовал предложение telcontar и просто заменил его. Хотя, если JPanel не единственная вещь в вашем кадре, я бы использовал
remove (java.awt.Component) вместо removeAll.
Если вы находитесь где-то посередине между этими двумя случаями, это в основном компромисс между временем и пространством. CardLayout сэкономит ваше время, но потребует больше памяти, так как необходимо постоянно сохранять в памяти всю эту другую панель. Но если вы просто заменяете панель, когда это необходимо, и строите ее по требованию, вам не нужно держать это в порядке, а переключение занимает больше времени.
Также вы можете попробовать JTabbedPane вместо этого использовать вкладки (это даже проще, чем CardLayout, потому что он обрабатывает отображение / скрытие автоматически)