Add an ActionListener to the listener list
Note: this method is declared as "synchronized" so that only one
thread is operating on the actionListenerList at once (each
of our Window objects have their own threads)
Implementation from Listing 32.2 of Introduction to Java (Liang)