Я только что сделал это в течение последних нескольких недель. Я выбрал немного другой подход, захватил многоуровневую панель, а затем добавил пользовательскую JPanel на многоуровневую панель. В jpanel я переопределил метод getHeight, и его высота начиналась с 0. Затем я мог добавить любые компоненты, которые я хотел, в мою jpanel. В jpanel у меня был метод запуска анимации, он запускал таймер, и в таймере все, что я делал, это увеличивал высоту моей jpanel до максимального размера.
Вот и все. В моем приложении это работает очень хорошо, я привязан к тому, чтобы развернуться ниже кнопки J на прессе, и свернуть на другой прессе.
Еще одна вещь, вам нужно добавить mouseAdapther в jpanel, чтобы события не проходили через компоненты под слоем.