Class Definition Java Tutorial

/*
 *     file: MethodInnerClassDemo.java
 *  package: oreilly.hcj.nested
 *
 * This software is granted under the terms of the Common Public License,
 * CPL, which may be found at the following URL:
 * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm
 *
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.
 * All Rights are Reserved by the various authors.
 *
 ########## DO NOT EDIT ABOVE THIS LINE ########## */
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
 * Demonstrates method-scoped inner classes.
 * 
 * @author Robert Simmons jr. (kraythe)
 * @version $Revision: 1.6 $
 */
public class MethodInnerClassDemo extends JDialog {
  /** Holds the logo image */
  private static final ImageIcon LOGO;
  /** Holds the location of the logo image. */
  private static final String LOGO_LOCATION = "oreilly/hcj/nested/oreilly_header3.gif";
  static {
    LOGO = new ImageIcon(ClassLoader.getSystemClassLoader().getResource(LOGO_LOCATION));
  }
  /** Holds a reference to the content pane. */
  private final Container contentPane;
  /** holds a demo variable. */
  private String demo;
  /**
   * Creates a new MethodInnerClassDemo object.
   * 
   * @param value
   *          Some value to be used.
   */
  public MethodInnerClassDemo(final int value) {
    super();
    String title = "Inner Class Demo";
    setTitle(title);
    setModal(true);
    contentPane = getContentPane();
    contentPane.setLayout(new BorderLayout());
    JLabel logoLabel = new JLabel(LOGO);
    contentPane.add(BorderLayout.NORTH, logoLabel);
    JButton btn = new JButton("Beep");
    /**
     * An action listener class.
     * 
     * @author Robert Simmons jr. (kraythe)
     * @version $Revision: 1.6 $
     */
    class MyActionListener implements ActionListener {
      /**
       * {@inheritDoc}
       */
      public void actionPerformed(final ActionEvent event) {
        Toolkit.getDefaultToolkit().beep();
        System.out.println(value);
        System.out.println(MethodInnerClassDemo.LOGO_LOCATION);
        System.out.println(MethodInnerClassDemo.this.demo);
        // System.out.println(title); // <= compiler error
      }
    }
    btn.addActionListener(new MyActionListener());
    contentPane.add(BorderLayout.SOUTH, btn);
    pack();
  }
  /**
   * Creates a new MethodInnerClassDemo object.
   */
  public MethodInnerClassDemo() {
    super();
    setTitle("Inner Class Demo");
    setModal(true);
    contentPane = getContentPane();
    contentPane.setLayout(new BorderLayout());
    JLabel logoLabel = new JLabel(LOGO);
    contentPane.add(BorderLayout.NORTH, logoLabel);
    JButton btn1 = new JButton("Beep");
    JButton btn2 = new JButton("Bell");
    /**
     * An action listener class.
     * 
     * @author Robert Simmons jr. (kraythe)
     * @version $Revision: 1.6 $
     */
    class MyActionListener implements ActionListener {
      /**
       * {@inheritDoc}
       */
      public void actionPerformed(final ActionEvent event) {
        Toolkit.getDefaultToolkit().beep();
      }
    }
    btn1.addActionListener(new MyActionListener());
    btn2.addActionListener(new MyActionListener());
    JPanel pnl = new JPanel(new GridLayout(1, 2));
    pnl.add(btn1);
    pnl.add(btn2);
    contentPane.add(BorderLayout.SOUTH, pnl);
    pack();
  }
  /**
   * Run the demo
   * 
   * @param args
   *          Command Line Arguments.
   */
  public static final void main(final String[] args) {
    MethodInnerClassDemo demo = new MethodInnerClassDemo();
    demo.show();
    System.out.println("Done");
  }
  /**
   * Setter for the property demo.
   * 
   * @param demo
   *          The new value for demo.
   */
  public void setDemo(final String demo) {
    this.demo = demo;
  }
  /**
   * Getter for the property demo.
   * 
   * @return The current value of demo.
   */
  public String getDemo() {
    return demo;
  }
  /**
   * Some demo method.
   */
  public void someMethod() {
    // ActionListener listener = new MyActionListener(); // <= compiler error.
  }
}
/* ########## End of File ########## */