Mega Code Archive

 
Categories / Java Tutorial / Class Definition
 

Demonstrates anonymous classes

/*  *     file: InnerClassDemo.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.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; /**  * Demonstrates anonymous classes.  *   * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>  * @version $Revision: 1.3 $  */ public class InnerClassDemo extends JDialog {   /** Holds the logo image */   private static final ImageIcon LOGO;   /** Holds the location of the logo image. */   private static final String LOGO_LOCATION = "sojm/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 int beepCount = 1;   /**    * Creates a new AnonymousDemo object.    *     * @param beepCount    *          THe number of times to beep when the button is pressed.    */   public InnerClassDemo(final int beepCount) {     super();     setTitle("Anonymous Demo");     contentPane = getContentPane();     contentPane.setLayout(new BorderLayout());     JLabel logoLabel = new JLabel(LOGO);     contentPane.add(BorderLayout.NORTH, logoLabel);     JButton btn = new BeepButton("Beep");     contentPane.add(BorderLayout.SOUTH, btn);     pack();     this.beepCount = beepCount;   }   /**    * Setter for the property demo.    *     * @param beepCount    *          The new value for demo.    */   public void setBeepCount(final int beepCount) {     this.beepCount = beepCount;   }   /**    * Getter for the property demo.    *     * @return The current value of demo.    */   public int getBeepCount() {     return beepCount;   }   /**    * Run the demo    *     * @param args    *          Command Line Arguments.    */   public static final void main(final String[] args) {     InnerClassDemo demo = new InnerClassDemo(4);     demo.show();     System.out.println("Done");   }   /**    * An inner class to implement an action listener.    *     * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>    * @version $Revision: 1.3 $    */   private class BeepButton extends JButton implements ActionListener {     /**      * Creates a new BeepButton object.      *       * @param text      *          The text to use for the beep button.      */     public BeepButton(final String text) {       super(text);       addActionListener(this);     }     /**      * @see java.awt.event.ActionListener      */     public void actionPerformed(final ActionEvent event) {       try {         for (int count = 0; count < beepCount; count++) {           Toolkit.getDefaultToolkit().beep();           Thread.sleep(100); // wait for the old beep to finish.         }       } catch (final InterruptedException ex) {         throw new RuntimeException(ex);       }     }   } } /* ########## End of File ########## */