Java Reference
In-Depth Information
public
interface
ConnectionListener
extends
EventListener
public
interface
FolderListener
extends
EventListener
public
interface
MessageChangedListener
extends
EventListener
public
interface
MessageCountListener
extends
EventListener
public
interface
StoreListener
extends
EventListener
public
interface
TransportListener
extends
EventListener
Each of these interfaces declares one or more methods that must be provided by im‐
plementing classes. For example, the
ConnectionListener
class declares these three
methods:
public
void
opened
(
ConnectionEvent
event
)
public
void
disconnected
(
ConnectionEvent
event
)
public
void
closed
(
ConnectionEvent
event
)
The
FolderListener
interface declares these three methods:
public
void
folderCreated
(
FolderEvent
event
)
public
void
folderDeleted
(
FolderEvent
event
)
public
void
folderRenamed
(
FolderEvent
event
)
Four of these events can be fired by folders. Consequently, there are 8
add
XXX
Listen
er()
and
remove
XXX
Listener()
methods in the
Folder
class:
public
void
addConnectionListener
(
ConnectionListener
listener
)
public
void
removeConnectionListener
(
ConnectionListener
listener
)
public
void
addFolderListener
(
FolderListener
listener
)
public
void
removeFolderListener
(
FolderListener
listener
)
public
void
addMessageCountListener
(
MessageCountListener
listener
)
public
void
removeMessageCountListener
(
MessageCountListener
listener
)
public
void
addMessageChangedListener
(
MessageChangedListener
listener
)
public
void
removeMessageChangedListener
(
MessageChangedListener
listener
)
The
add
XXX
Listener()
methods add an implementation of the particular interface to
the list of listeners. The
remove
XXX
Listener()
methods remove an implementation
from that list. All of this works exactly as it does in JavaBeans and Swing, just with
different events.
For example, suppose you want to be notified every time a new email message arrives.
First you implement the
MessageCountListener
interface with a class that responds to
message added events as shown in
Example 9-1
.
Example 9-1. Message Notifier
import
javax.mail.*
;
import
javax.mail.event.*
;
public
class
MessageArrival
implements
MessageCountListener
{
@Override
public
void
messagesAdded
(
MessageCountEvent
event
)
{
Message
[]
newMessages
=
event
.
getMessages
();
for
(
Message
message
:
newMessages
)
{