Event Classes and Listener Interfaces

Java Swing uses event classes to encapsulate details about events and listener interfaces to respond to those events. This is the basis of Swing’s event delegation model.


Event Classes

Event classes are found in java.awt.event and javax.swing.event packages. Each class corresponds to a type of user action.

Event ClassDescription
ActionEventGenerated by buttons, menus, etc.
MouseEventMouse actions like click, press
KeyEventKeyboard input
WindowEventWindow state changes
ItemEventCheckbox, radio button changes
public void actionPerformed(ActionEvent e) {
    String command = e.getActionCommand();
}

Listener Interfaces

Each event class has a corresponding listener interface.

Listener InterfaceHandlesEvent Class
ActionListenerButton clicks, menu selectionActionEvent
MouseListenerMouse click, press, release, etc.MouseEvent
KeyListenerKey press, release, and typingKeyEvent
WindowListenerWindow eventsWindowEvent
ItemListenerItem selection eventsItemEvent

Adapter Classes

To simplify implementing listeners with many methods, Java provides adapter classes:

  • MouseAdapter, KeyAdapter, WindowAdapter
  • You can override only the method you need.
addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        System.out.println("Clicked!");
    }
});