JLayeredPane работает по умолчанию без менеджера компоновки, что означает, что вы используете абсолютное позиционирование и не меняете размеры. Вы можете добавить слушателя изменения размера и настроить позиции и размер внутренних компонентов из кода, как вам удобно.
Если вы не хотите делать это из кода, вам понадобится менеджер раскладки, ничего особенного, просто что-то, чтобы заполнить контейнер при его изменении размера. Но вот в чем дело ... если вы добавите менеджер макетов, он будет размещать компоненты так, как будто они все находятся в одном слое, но большинство менеджеров макетов не перекрывают свои дочерние элементы, поэтому они бесполезны. Вы можете использовать только OverlayLayout - он также может изменять размер дочерних элементов. Но использование OverlayLayout с JLayeredPane излишне. Вы можете просто использовать OverlayLayout с JPanel. Так что да, JLayeredPane бесполезен. Вместо этого я рекомендую использовать JPanel с OverlayLayout.
Вот как настроить все, чтобы вы могли иметь большой контроль над практически любым сценарием с перекрывающимся пользовательским интерфейсом: используя JPanel с OverlayLayout, создайте отдельную прозрачную JPanel для каждого слоя. Таким образом, вы можете комбинировать различные LayoutManager на разных слоях, устанавливая разные менеджеры компоновки для каждой панели, включая абсолютное позиционирование при необходимости. Затем добавьте видимые компоненты внутри панелей, представляющих слои. Не добавляйте их непосредственно на панель OverlayLayout. Просто убедитесь, что все JPanels, которые вы используете в качестве слоев, имеют setAlignmentX и Y по центру (0.5f), чтобы они заполняли всю панель OverlayLayout по мере ее изменения.