он перемещает панель (со своим содержимым) влево, поэтому панель справа заменяет ее плавным эффектом
Вы спрашиваете, что хотите, чтобы панель «скользила», но код выглядит так, как будто вы пытаетесь заставить панель «сжаться», поэтому она заменяется другой панелью.
Предполагая, что у вас есть две панели одинакового размера, вы можете "сдвинуть" одну из них, а другую - в поле зрения.
Для этого вы используете панель с GridLayout. Таким образом, каждый компонент будет иметь одинаковый размер. Затем вы добавляете панель в область прокрутки без полос прокрутки. Размер полосы прокрутки должен быть установлен равным размеру первого компонента. Затем вы можете «сдвинуть» две панели, изменив положение области просмотра. Таким образом, в вашем таймере вы должны иметь что-то вроде:
JViewport viewport = scrollPane.getViewport();
Point position = viewport.getViewPosition();
position.x += 5;
viewport.setViewPosition( position );
Затем вы остановите таймер, когда позиция будет больше, чем размер компонента.