The JFC Swing Tutorial: A Guide to Constructing GUIs (2nd Edition)
< Day Day Up > |
Listeners Supported by Swing Components
You can tell what kinds of events a component can fire by looking at the kinds of event listeners you can register on it. For example, the JComboBox class defines these listener registration methods :
Thus, a combo box supports action, item, and popup menu listeners in addition to the listener type support it inherits from JComponent . A component fires only those events for which listeners have registered on it. For example, if an action listener is registered on a particular combo box, but the combo box has no other listeners, then the combo box will fire only action events ”no item or popup menu events. Listeners supported by Swing components fall into two categories:
Listeners That All Swing Components Support
Because all Swing components descend from the AWT Component class, you can register the following listeners on any Swing component: component listener
Listens for changes in the component's size , position, or visibility. focus listener
Listens for whether the component gained or lost the ability to receive keyboard input. key listener
Listens for key presses; key events are fired only by the component that has the current keyboard focus. mouse listener
Listens for mouse clicks and mouse movement into or out of the component's drawing area. mouse-motion listener
Listens for changes in the cursor's position over the component. mouse-wheel listener (introduced in 1.4)
Listens for mouse wheel movement over the component. property-change listener
Listens for changes to various component properties, such as the component's displayed value. Two listener types introduced in release 1.3, HierarchyListener and HierarchyBoundsListener , listen to changes to a component's containment hierarchy. These listener types aren't useful to most programs and can generally be ignored. All Swing components descend from the AWT Container class, but many of them aren't used as containers. So, technically speaking, any Swing component can fire container events, which notify listeners that a component has been added to or removed from the container. Realistically speaking, however, only containers (such as panels and frames ) and compound components (such as combo boxes) fire container events. JComponent provides support for three more listener types. You can register an ancestor listener [8] to be notified when a component's containment ancestors are added to or removed from a container, hidden, made visible, or moved. This listener type is an implementation detail which predated hierarchy listeners and can generally be ignored. [8] API documentation for AncestorListener is online at: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/event/AncestorListener.html. Swing components conform to the JavaBeans component architecture. Among other things, this means that Swing components support bound and constrained properties and notify listeners of changes to the properties. We've already mentioned property change listeners. Swing components also support vetoable change listeners, [9] which listen for changes to constrained properties. [9] API documentation for VetoableChangeListener is online at: http://java.sun.com/j2se/1.4.2/docs/api/java/beans/VetoableChangeListener.html. Other Listeners That Swing Components Support
Table 1 lists Swing components and the listeners that they support, not including listeners supported by all Component s, Container s, or JComponent s. In many cases, the events are fired directly from the component. In other cases, the events are fired from the component's data or selection model. To find out the details for the particular component and listener you're interested in, go first to the component how-to section and then, if necessary, to the listener how-to section (using the page number in parentheses). Table 1. Swing Components and Listeners They Support
|
< Day Day Up > |