# Java: Events -- Introduction

## Events come from User Controls

When you define a user interface, you will usually have some way to get user input. For example, buttons, menus, sliders, mouse clicks, ... all generate events when the user does something with them.
User interface event objects are passed from an event source, such as a button or mouse click, to an event listener, a user method which will process them.

## Every Input Control (JButton, JSlider, ...) Needs an Event Listener

If you want a control to do something when the user alters the control, you must have a listener.

## Types of Events

There are several kinds of events. The most common are:

User Control | addXXXListener | method in listener
--- | --- | ---
`JButton JTextField JMenuItem` | `addActionListener()` | `actionPerformed(ActionEvent e)`
`JSlider` | `addChangeListener()` | `stateChanged(ChangeEvent e)`
`JCheckBox` | `addItemListener()` | `itemstateChanged()`
`key on component` | `addKeyListener()` | `keyPressed(), keyReleased(), keyTyped()`
`mouse on component` | `addMouseListener()` | `mouseClicked(), mouseEntered(), mouseExited(), mousePressed(), mouseReleased()`
`mouse on component` | `addMouseMotionListener()` | `mouseMoved(), mouseDragged()`
`JFrame` | `addWindowListener()` | `windowClosing(WindowEvent e), ...`

## `import` Statements

To use events, you must have these import statements:

    import java.awt.*
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;