- As we have shown, you can catch all the
events you are interested in by implementing a handleEvent() method.
When you use handleEvent() to catch events, you need to perform a
test to check for the event ID that you're looking for. In our
example, to check for an action event we performed the following
test:
if (event.id == Event.ACTION_EVENT)
- However, if you want to avoid these types of
comparisons in your code, there are other methods you can implement
instead of handleEvent(). Unlike handleEvent(), these other methods
are tied to specific event types and can only be called when their
particular event type is generated.
- The action() method, for example, is called
only when an action event is generated and not when events of other
types occur. Thus, instead of implementing a handleEvent() routine and
checking for an event ID of ACTION_EVENT, you can simply implement
an action() method.
- As an example, the following code performs the
exact same function as our previous code to handle an action event
in a button. However, in this code we handle the event by
implementing an action() routine instead of a handleEvent()
routine:
class MyButton extends Button
{
public boolean action(Event event, Object arg)
{
System.out.println("I got an action: " + event);
return super.action(event, arg);
}
}
- Notice that we didn't have to check the
event ID. It's common to see action events handled in an action()
routine instead of a handleEvent() routine. Be aware, however, that
they can be handled in either method.
When does the action() method get called? When the action event is
passed up in handleEvent() through the chain of superclasses, it
eventually reaches Component. In particular, the action event
eventually reaches the handleEvent() method in the Component class.
The handleEvent() routine in the Component class calls the action()
method on the component if the event is an action event. By default,
the action method of a component does nothing. However, if you have
provided an action() event as shown above, you will receive the
event. |
- action() events aren't the only events that
are handled in other methods. The following table shows the other
methods you can implement for their respective event IDs.
Event ID |
Method |
ACTION_EVENT |
public boolean action(Event e, Object arg); |
GOT_FOCUS |
public boolean gotFocus(Event e, Object arg); |
KEY_PRESS |
public boolean keyDown(Event e, int key); |
KEY_RELEASE |
public boolean keyUp(Event e, int key); |
LOST_FOCUS |
public boolean lostFocus(Event e, Object arg); |
MOUSE_DOWN |
public boolean mouseDown(Event e, int x, int y); |
MOUSE_DRAG |
public boolean mouseDrag(Event e, int x, int y); |
MOUSE_ENTER |
public boolean mouseEnter(Event e, int x, int y); |
MOUSE_EXIT |
public boolean mouseExit(Event e, int x, int y); |
MOUSE_MOVE |
public boolean mouseMove(Event e, int x, int y); |
MOUSE_UP |
public boolean mouseUp(Event e, int x, int y); |
Previous Page |
Next Page
|