Swing JFC Java

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/
// OptPaneComparison.java
//A quick utility class to help you see the differences between various
//types of option panes, both via internal frames and using standalone
//popups.
//
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class OptPaneComparison extends JFrame {
  protected JOptionPane optPane;
  public static void main(String[] args) {
    JFrame f = new OptPaneComparison("Enter your name");
    f.setVisible(true);
  }
  public OptPaneComparison(final String message) {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    final int msgType = JOptionPane.QUESTION_MESSAGE;
    final int optType = JOptionPane.OK_CANCEL_OPTION;
    final String title = message;
    setSize(350, 200);
    // Create a desktop for internal frames
    final JDesktopPane desk = new JDesktopPane();
    setContentPane(desk);
    // Add a simple menu bar
    JMenuBar mb = new JMenuBar();
    setJMenuBar(mb);
    JMenu menu = new JMenu("Dialog");
    JMenu imenu = new JMenu("Internal");
    mb.add(menu);
    mb.add(imenu);
    final JMenuItem construct = new JMenuItem("Constructor");
    final JMenuItem stat = new JMenuItem("Static Method");
    final JMenuItem iconstruct = new JMenuItem("Constructor");
    final JMenuItem istat = new JMenuItem("Static Method");
    menu.add(construct);
    menu.add(stat);
    imenu.add(iconstruct);
    imenu.add(istat);
    // Create our JOptionPane. We're asking for input, so we call
    // setWantsInput.
    // Note that we cannot specify this via constructor parameters.
    optPane = new JOptionPane(message, msgType, optType);
    optPane.setWantsInput(true);
    // Add a listener for each menu item that will display the appropriate
    // dialog/internal frame
    construct.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ev) {
        // Create and display the dialog
        JDialog d = optPane.createDialog(desk, title);
        d.setVisible(true);
        respond(getOptionPaneValue());
      }
    });
    stat.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ev) {
        String s = JOptionPane.showInputDialog(desk, message, title,
            msgType);
        respond(s);
      }
    });
    iconstruct.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ev) {
        // Create and display the dialog
        JInternalFrame f = optPane.createInternalFrame(desk, title);
        f.setVisible(true);
        // Listen for the frame to close before getting the value from
        // it.
        f.addPropertyChangeListener(new PropertyChangeListener() {
          public void propertyChange(PropertyChangeEvent ev) {
            if ((ev.getPropertyName()
                .equals(JInternalFrame.IS_CLOSED_PROPERTY))
                && (ev.getNewValue() == Boolean.TRUE)) {
              respond(getOptionPaneValue());
            }
          }
        });
      }
    });
    istat.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ev) {
        String s = JOptionPane.showInternalInputDialog(desk, message,
            title, msgType);
        respond(s);
      }
    });
  }
  // This method gets the selected value from the option pane and resets the
  // value to null so we can use it again.
  protected String getOptionPaneValue() {
    // Get the result . . .
    Object o = optPane.getInputValue();
    String s = "";
    if (o != null)
      s = (String) o;
    Object val = optPane.getValue(); // which button?
    // Check for cancel button or closed option
    if (val != null) {
      if (val instanceof Integer) {
        int intVal = ((Integer) val).intValue();
        if ((intVal == JOptionPane.CANCEL_OPTION)
            || (intVal == JOptionPane.CLOSED_OPTION))
          s = "";
      }
    }
    // A little trick to clean the text field. It is only updated if
    // the initial value gets changed. To do this, we'll set it to a
    // dummy value ("X") and then clear it.
    optPane.setValue("");
    optPane.setInitialValue("X");
    optPane.setInitialValue("");
    return s;
  }
  protected void respond(String s) {
    if (s == null)
      System.out.println("Never mind.");
    else
      System.out.println("You entered: " + s);
  }
}