java - How do event listeners recognize specific events in each of their methods? -


what i'm having trouble understanding how method such as

    public interface mouselistener extends eventlistener {          public void mouseclicked(mouseevent e) {              //code happens when click mouse on component         }     } 

knows id of mouse event. why event sent mouseclicked method when event performed? constructors these methods call of possible mouse events why sent mouseclicked method when other methods have same constructor (i.e. mousepressed, mousereleased, etc.)

such interface starts useful when implement it, create object , register object event source. registration part critical here - if register mouse click events, that's object receive.

so these interfaces alike because used handle similar events, in end informed events register to. there no magic here - event source internally keeps collection of listeners interested in event , if such event occurs, iterates on collection , invokes listener method.

for example mouse listener interface mentioned has couple of methods:

public interface mouselistener extends eventlistener {     public void mouseclicked(mouseevent e);     public void mousepressed(mouseevent e);     ... } 

if @ part of java.awt.component class you'll see it's event source takes care of calling right method:

public abstract class component implements imageobserver, menucontainer,                                        serializable { ...     protected void processmouseevent(mouseevent e) {         mouselistener listener = mouselistener;         if (listener != null) {             int id = e.getid();             switch(id) {               case mouseevent.mouse_pressed:                   listener.mousepressed(e); // invoking specific listener's method                   break;               case mouseevent.mouse_released:                   listener.mousereleased(e);                   break;               ...   } 

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -