Swing JFC Java

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);
    }
  }
}