protected void firePropertyChange ( PropertyChangeEvent evt ) { /*log.fine("firePropertyChange: called");*/ // Take a copy of the event as a final variable so that it can be used in an inner class final PropertyChangeEvent finalEvent = evt ; Iterator it ; // Check if the list of listeners is empty if ( listeners == null ) { // There are no listeners so simply return without doing anything return ; } // synchronize on the list of listeners to prevent comodification synchronized ( listeners ) { // Cycle through all listeners and notify them it = listeners . iterator ( ) ; while ( it . hasNext ( ) ) { // Get the next listener from the list final PropertyChangeListener l = ( PropertyChangeListener ) it . next ( ) ; // Notify the listener of the property change event Runnable r = new Runnable ( ) { public void run ( ) { // Fire a property change event l . propertyChange ( finalEvent ) ; } } ; // Run the property change event in the Swing event queue SwingUtilities . invokeLater ( r ) ; } } }
Notifies all property change listeners of the given PropertyChangeEvent .