Im Gegensatz zur Version 1.0 werden im JDK 1.1 die Ereignistypen nicht mehr durch eine einzige Klasse Event repräsentiert, sondern durch eine Hierarchie von Ereignisklassen, die aus der Klasse java.util.EventObject abgeleitet sind. Die Motivation der Java-Designer, diese Klasse in das Paket java.util zu legen, resultierte wohl aus der Uberlegung, daß der Transfer von Nachrichten nicht allein auf den Oberflächenteil beschränkt sein muß, sondern auch zwischen anderen Elementen einer komplexen Anwendung sinnvoll sein kann. Die Klasse java.util.EventObject fungiert damit als allgemeine Oberklasse aller Arten von Ereignissen, die zwischen verschiedenen Programmteilen ausgetauscht werden können. Ihre einzige nennenswerte Fähigkeit besteht darin, das Objekt zu speichern, welches die Nachricht ausgelöst hat, und durch Aufruf der Methode getSource anzugeben:
public Object getSource();
Die Hierarchie der AWT-spezifischen Ereignisklassen beginnt eine Ebene tiefer mit der Klasse AWTEvent, die aus EventObject abgeleitet wurde und sich im Paket java.awt befindet. AWTEvent ist Oberklasse aller Ereignisklassen des AWT. Diese befinden sich im Paket java.awt.event, das damit praktisch in jede Klasse einzubinden ist, die sich mit dem Event-Handling von GUI-Anwendungen beschäftigt. Nachfolgende Abbildung gibt einen Überblick über die Vererbungshierarchie der Ereignisklassen:
Die Dokumentation zum JDK unterteilt diese Klassen in zwei große Hierarchien. Unterhalb der Klasse ComponentEvent befinden sich alle Low-Level-Ereignisse. Sie sind für den Transfer von elementaren Nachrichten zuständig, die von Fenstern oder Dialogelementen stammen. Die übrigen Klassen ActionEvent, AdjustmentEvent, ItemEvent und TextEvent werden als semantische Ereignisse bezeichnet. Sie sind nicht an ein bestimmtes GUI-Element gebunden, sondern übermitteln höherwertige Ereignisse wie das Ausführen eines Kommandos oder die Änderung eines Zustands.
Ein Problem der AWT -Designer war es, einen guten Kompromiß zwischen der Größe und der Anzahl der zu implementierenden Ereignisklassen zu finden. Der Ableitungsbaum wäre sehr unübersichtlich geworden, wenn die AWT-Designer für jedes Elementarereignis eine eigene Klasse implementiert hätten. Deshalb haben sie sich dazu entschlossen, mehrere unterschiedliche Ereignisse durch eine einzige Klasse zu realisieren. So ist beispielsweise die Klasse MouseEvent sowohl für Mausbewegungen als auch für alle Arten von Klick- oder Drag-Ereignissen zuständig. Mit Hilfe der Methode getID und der in den jeweiligen Eventklassen definierten symbolischen Konstanten kann das Programm herausfinden, um welche Art von Ereignis es sich handelt:
public int getID();
Falls das Programm eigene Eventklassen definieren will und Konstanten zur Vergabe der Event-Ids vergeben muß, sollten diese oberhalb der symbolischen Konstante RESERVED_ID_MAX liegen.
Die Eventklassen im JDK 1.1 enthalten keine frei zugänglichen Felder(=Attribute). Statt dessen sind alle Eigenschaften durch set-/get-Methoden gekapseit, die je nach Ereignisklasse unterschiedlich sind. So gibt es beispielswelse in MouseEvent die Methode getPoint, mit der die Mauszeigerposition abgefragt werden kann, in KeyEvent die Methode getKeyChar zur Bestimmung der betätigten Taste und in der übergeordneten Klasse InputEvent die Methode getModifiers, mit der sowohl für Maus- als auch für Tastaturevents der Zustand der Sondertasten bestimmt werden kann.