Я думаю, что у вас может быть неправильный менеджер раскладки для того, что вы хотите сделать (оставляя в стороне, на данный момент, я не уверен, что вы хотите делать то, что вы говорите, что хотите сделать).
Я еще не нашел документацию о том, что я подозреваю, что CardLayout изменяет размеры всех своих дочерних элементов до размера своего контейнера.Я нашел следующий комментарий для его метода "layoutContainer":
* Each component in the <code>parent</code> container is reshaped
* to be the size of the container, minus space for surrounding
* insets, horizontal gaps, and vertical gaps.
Я думаю, что это разумное поведение, так как для пользователя было бы очень неприятно, когда размер панели прыгает вокруг при обходе панелей.
Если это действительно то поведение, которое вам нужно, то я думаю, что вам нужен другой менеджер раскладки.А поскольку для пользовательского интерфейса в целом это необычное поведение, вполне возможно, что вы не найдете стандартного для этой конкретной «функции», поэтому вам, возможно, придется написать свой собственный.