Mega Code Archive

 
Categories / Java / Class
 

This program demonstrates the use of inner classes

/*    This program is a part of the companion code for Core Java 8th ed.    (http://horstmann.com/corejava)    This program is free software: you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation, either version 3 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program.  If not, see <http://www.gnu.org/licenses/>. */ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.Timer; /**  * This program demonstrates the use of inner classes.  * @version 1.10 2004-02-27  * @author Cay Horstmann  */ public class InnerClassTest {    public static void main(String[] args)    {       TalkingClock clock = new TalkingClock(1000, true);       clock.start();       // keep program running until user selects "Ok"       JOptionPane.showMessageDialog(null, "Quit program?");       System.exit(0);    } } /**  * A clock that prints the time in regular intervals.  */ class TalkingClock {    /**     * Constructs a talking clock     * @param interval the interval between messages (in milliseconds)     * @param beep true if the clock should beep     */    public TalkingClock(int interval, boolean beep)    {       this.interval = interval;       this.beep = beep;    }    /**     * Starts the clock.     */    public void start()    {       ActionListener listener = new TimePrinter();       Timer t = new Timer(interval, listener);       t.start();    }    private int interval;    private boolean beep;    public class TimePrinter implements ActionListener    {       public void actionPerformed(ActionEvent event)       {          Date now = new Date();          System.out.println("At the tone, the time is " + now);          if (beep) Toolkit.getDefaultToolkit().beep();       }    } }