You need a layout manager which understands the Z-Axis. The default layout managers don't understand the Z-Axis of the JLayeredPane.
If you simply want to overlay stuff on top of each other you can use a LayoutManager like this:
JLayeredPane layeredFooPane = new JLayeredPane();
// The magic!
layeredFooPane.setLayout(new LayeredPaneLayout(layeredPane));
// Add components:
layeredFooPane.add(fooComponent, new Integer(JLayeredPane.DEFAULT_LAYER + 10));
layeredFooPane.add(barComponent, JLayeredPane.DEFAULT_LAYER);
LayoutManager Class:
public class LayeredPaneLayout implements LayoutManager {
private final Container target;
private static final Dimension preferredSize = new Dimension(500, 500);
public LayeredPaneLayout(final Container target) {
this.target = target;
}
@Override
public void addLayoutComponent(final String name, final Component comp) {
}
@Override
public void layoutContainer(final Container container) {
for (final Component component : container.getComponents()) {
component.setBounds(new Rectangle(0, 0, target.getWidth(), target.getHeight()));
}
}
@Override
public Dimension minimumLayoutSize(final Container parent) {
return preferredLayoutSize(parent);
}
@Override
public Dimension preferredLayoutSize(final Container parent) {
return preferredSize;
}
@Override
public void removeLayoutComponent(final Component comp) {
}
}