Per lo schema di progettazione osservabile, vedi link
Approssimativamente, quando l'utente fa clic sul pulsante del mouse e l'applicazione Java è attiva, il sistema operativo notifica all'applicazione (in questo caso, la JVM) il clic. Quindi la JVM crea l'oggetto MouseEvent, così come altri oggetti necessari per gestire l'evento e cerca gli ascoltatori di quell'evento (pensa che l'oggetto Button abbia una collezione di oggetti MouseListener e tu abbia aggiunto il listener alla raccolta). Quindi itera su tutti gli ascoltatori di quella raccolta e chiama il metodo appropriato. Conosce il metodo appropriato perché è definito nell'interfaccia MouseListener, quindi sa che tutti gli oggetti in quella raccolta implementano i metodi definiti nell'interfaccia.
Ad esempio, supponiamo che ci sia questo codice in una classe Button (probabilmente è da qualche altra parte, ma serve come esempio):
// suppose mouseListenerCollection contains all the mouse listeners in the component
for(MouseListener listener : mouseListenerCollection){
listener.mouseClicked(event);
}
Richiama il metodo mouseClicked (MouseEvent e) perché il mouse è stato cliccato e tutti gli oggetti che implementano l'interfaccia MouseListener implementano il metodo mouseClicked e viene specificato che quando si fa clic su un mouse, deve essere richiamato il metodo mouseClicked.
Per ulteriori informazioni, fai sempre riferimento a API javadoc .