Java tutorial
import java.awt.BorderLayout; import java.awt.Frame; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class SimpleInternalFrameDemo extends Frame { JButton openButton, macButton, javaButton, motifButton, winButton; JLayeredPane desktop; JInternalFrame internalFrame; public SimpleInternalFrameDemo() { super("Internal Frame Demo"); setSize(500, 400); openButton = new JButton("Open"); macButton = new JButton("Mac"); javaButton = new JButton("Metal"); motifButton = new JButton("Motif"); winButton = new JButton("Windows"); Panel p = new Panel(); p.add(openButton); p.add(macButton); p.add(javaButton); p.add(motifButton); p.add(winButton); add(p, BorderLayout.SOUTH); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); openButton.addActionListener(new OpenListener()); LnFListener lnf = new LnFListener(this); macButton.addActionListener(lnf); javaButton.addActionListener(lnf); motifButton.addActionListener(lnf); winButton.addActionListener(lnf); // Set up the layered pane desktop = new JDesktopPane(); desktop.setOpaque(true); add(desktop, BorderLayout.CENTER); } // An inner class to handle presses of the Open button class OpenListener implements ActionListener { public void actionPerformed(ActionEvent e) { if ((internalFrame == null) || (internalFrame.isClosed())) { internalFrame = new JInternalFrame("Internal Frame", true, true, true, true); internalFrame.setBounds(50, 50, 200, 100); desktop.add(internalFrame, new Integer(1)); internalFrame.setVisible(true); } } } public static void main(String args[]) { SimpleInternalFrameDemo sif = new SimpleInternalFrameDemo(); sif.setVisible(true); } } class LnFListener implements ActionListener { Frame frame; public LnFListener(Frame f) { frame = f; } public void actionPerformed(ActionEvent e) { String lnfName = null; if (e.getActionCommand().equals("Mac")) { lnfName = "com.apple.mrj.swing.MacLookAndFeel"; } else if (e.getActionCommand().equals("Metal")) { lnfName = "javax.swing.plaf.metal.MetalLookAndFeel"; } else if (e.getActionCommand().equals("Motif")) { lnfName = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; } else if (e.getActionCommand().equals("Windows")) { lnfName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; } else { System.err.println("Unrecognized L&F request action: " + e.getActionCommand()); return; } try { UIManager.setLookAndFeel(lnfName); SwingUtilities.updateComponentTreeUI(frame); } catch (UnsupportedLookAndFeelException ex1) { System.err.println("Unsupported LookAndFeel: " + lnfName); } catch (ClassNotFoundException ex2) { System.err.println("LookAndFeel class not found: " + lnfName); } catch (InstantiationException ex3) { System.err.println("Could not load LookAndFeel: " + lnfName); } catch (IllegalAccessException ex4) { System.err.println("Cannot use LookAndFeel: " + lnfName); } } }