Different components can generate diffrent types of events such as ActionEvent, MouseEvent, TextEvent and etc. Any object can be notified of the event. All it has to do is to implement the appropriate interface and be registered as an event listener on the appropriate event source. Java use a delegation model for handling events generated by components. Any component can be the source of an event.
Any object can be a listner of an event by implementing a proper listener interface.
The event generated by a source component is sent only to those listners that have been registrered with the source component.