import javax.swing.*; import javax.swing.border.*; import javax.accessibility.*; import java.awt.*; import java.awt.event.*; public class LayeredPaneDemo extends JFrame implements ActionListener { JComboBox layerList; JButton makeButton; JLayeredPane layeredPane; int numFrames = 0; String[] layerStrings = { "Default Layer", "Palette Layer", "Modal Layer", "Popup Layer", "Drag Layer" }; Integer[] layerValues = { JLayeredPane.DEFAULT_LAYER, JLayeredPane.PALETTE_LAYER, JLayeredPane.MODAL_LAYER, JLayeredPane.POPUP_LAYER, JLayeredPane.DRAG_LAYER }; static ImageIcon[] icon = new ImageIcon[5]; public LayeredPaneDemo() { super("LayeredPaneDemo"); if(icon[0] == null) { icon[0] = new ImageIcon("images/Bird.gif", layerStrings[0]); icon[1] = new ImageIcon("images/Cat.gif", layerStrings[1]); icon[2] = new ImageIcon("images/Dog.gif", layerStrings[2]); icon[3] = new ImageIcon("images/Rabbit.gif", layerStrings[3]); icon[4] = new ImageIcon("images/Pig.gif", layerStrings[4]); } layerList = new JComboBox(layerStrings); layerList.setSelectedIndex(0); makeButton = new JButton("Create a Frame"); makeButton.addActionListener(this); layeredPane = getLayeredPane(); JPanel controls = new JPanel(); controls.add(layerList); controls.add(makeButton); controls.setBorder(BorderFactory.createTitledBorder("Add Frames to Specified Layer")); JPanel emptyArea = new JPanel(); emptyArea.setPreferredSize(new Dimension(600, 400)); Container contentPane = getContentPane(); // use a layout manager that respects preferred sizes contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS)); contentPane.add(Box.createRigidArea(new Dimension(0, 10))); contentPane.add(controls); contentPane.add(Box.createRigidArea(new Dimension(0, 10))); contentPane.add(emptyArea); for (int i = 0 ; i < icon.length; i++) addNewInternalFrame(i); } public void actionPerformed(ActionEvent e) { if(e.getSource() == makeButton) { int index = layerList.getSelectedIndex(); addNewInternalFrame(index); } } private void addNewInternalFrame(int index) { JInternalFrame newFrame = new JInternalFrame(); newFrame.setTitle(layerStrings[index]); JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JLabel(icon[index]), "Center"); contentPane.setBackground(Color.white); contentPane.setMinimumSize(new Dimension(25, 25)); numFrames++; newFrame.setBounds(30*(numFrames%10), 30*(numFrames%10)+55, 200, 160); newFrame.setContentPane(contentPane); Integer layer = layerValues[index]; layeredPane.add(newFrame, layer); try { newFrame.setSelected(true); } catch (java.beans.PropertyVetoException e2) {} } public static void main(String[] args) { JFrame frame = new LayeredPaneDemo(); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; frame.addWindowListener(l); frame.pack(); frame.setVisible(true); } }