JLayeredPane Sample
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JLayeredPane; public class JLayeredPaneSample { public static void main(String args[]) { JFrame f = new JFrame("JDesktopPane Sample"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container content = f.getContentPane(); JLayeredPane desktop = new JDesktopPane(); desktop.setOpaque(false); desktop.add(createLayer("Open 1"), JLayeredPane.POPUP_LAYER); desktop.add(createLayer("Iconified"), JLayeredPane.DEFAULT_LAYER); desktop.add(createLayer("Open 2"), JLayeredPane.PALETTE_LAYER); content.add(desktop, BorderLayout.CENTER); f.setSize(300, 200); f.setVisible(true); } public static JInternalFrame createLayer(String label) { return new SelfInternalFrame(label); } static class SelfInternalFrame extends JInternalFrame { public SelfInternalFrame(String s) { getContentPane().add(new JLabel(s), BorderLayout.CENTER); setBounds(50, 50, 100, 100); setResizable(true); setClosable(true); setMaximizable(true); setIconifiable(true); setTitle(s); setVisible(true); } } }