Java tutorial
import java.beans.PropertyVetoException; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class CascadeDemo extends JFrame implements ActionListener { private static ImageIcon EARTH; private int m_count; private int m_tencount; private JButton m_newFrame; private JDesktopPane m_desktop; private JComboBox m_UIBox; private UIManager.LookAndFeelInfo[] m_infos; public CascadeDemo() { super("CascadeDemo"); EARTH = new ImageIcon("earth.jpg"); m_count = m_tencount = 0; m_desktop = new JDesktopPane(); m_desktop.putClientProperty("JDesktopPane.dragMode", "outline"); m_newFrame = new JButton("New Frame"); m_newFrame.addActionListener(this); m_infos = UIManager.getInstalledLookAndFeels(); String[] LAFNames = new String[m_infos.length]; for (int i = 0; i < m_infos.length; i++) { LAFNames[i] = m_infos[i].getName(); } m_UIBox = new JComboBox(LAFNames); m_UIBox.addActionListener(this); JPanel topPanel = new JPanel(true); topPanel.add(m_newFrame); topPanel.add(new JLabel("Look & Feel:", SwingConstants.RIGHT)); topPanel.add(m_UIBox); getContentPane().setLayout(new BorderLayout()); getContentPane().add("North", topPanel); getContentPane().add("Center", m_desktop); setSize(570, 400); Dimension dim = getToolkit().getScreenSize(); setLocation(dim.width / 2 - getWidth() / 2, dim.height / 2 - getHeight() / 2); setVisible(true); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(l); } public void newFrame() { JInternalFrame jif = new JInternalFrame("Frame " + m_count, true, true, true, true); jif.setBounds(20 * (m_count % 10) + m_tencount * 80, 20 * (m_count % 10), 200, 200); JLabel label = new JLabel(EARTH); jif.getContentPane().add(new JScrollPane(label)); m_desktop.add(jif); try { jif.setSelected(true); } catch (PropertyVetoException pve) { System.out.println("Could not select " + jif.getTitle()); } m_count++; if (m_count % 10 == 0) { if (m_tencount < 3) m_tencount++; else m_tencount = 0; } } public void actionPerformed(ActionEvent e) { if (e.getSource() == m_newFrame) newFrame(); else if (e.getSource() == m_UIBox) { m_UIBox.hidePopup(); // BUG WORKAROUND try { UIManager.setLookAndFeel(m_infos[m_UIBox.getSelectedIndex()].getClassName()); SwingUtilities.updateComponentTreeUI(this); } catch (Exception ex) { System.out.println("Could not load " + m_infos[m_UIBox.getSelectedIndex()].getClassName()); } } } public static void main(String[] args) { new CascadeDemo(); } }