Mega Code Archive

 
Categories / Java Tutorial / Class Definition
 

Demonstrates method-scoped inner classes

/*  *     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 <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>  * @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 <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>      * @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 <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>      * @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 ########## */