Bei der Programmierung unter einer grafischen Oberfläche erfolgt die Kommunikation zwischen Betriebssystem und Anwendungsprogramm zu einem wesentlichen Teil durch das Versenden von Nachrichten. Die Anwendung wird dabei über alle Arten von Ereignissen und Zustandsänderungen vom Betriebssystem informiert. Dazu zählen beispielsweise Mausklicks, Bewegungen des Mauszeigers, Tastatureingaben oder Veränderungen an der Größe oder Lage des Fensters.
Bei der Verarbeitung des Nachrichtenverkehrs sind zwei verschiedene Arten von Objekten beteiligt:
Die Ereignisquellen (Event Sources) sind die Auslöser der Nachrichten. Eine Ereignisquelle kann beispielsweise eine Schaltfläche sein, die auf einen Mausklick reagiert, oder ein Fenster, das mitteilt, dass es über das Systemmenü geschlossen werden soll.
Die Reaktion auf diese Nachrichten erfolgt in den speziellen Ereignisempfängern (den EventListeners). Das sind Objekte, die das zum Ereignis passende Empfänger-Interface implementieren. Damit ein Ereignisempfänger die Nachrichten einer bestimmten Ereignisquelle erhält, muß er sich bei dieser registrieren.