Luisteraars van Java-evenementen en hoe ze werken

Een gebeurtenislistener in Java is ontworpen om een ​​soort gebeurtenis te verwerken - deze "luistert" naar een gebeurtenis, zoals de muisklik van een gebruiker of een toetsaanslag, en reageert daarop. Een gebeurtenislistener moet verbonden zijn met een gebeurtenisobject dat de gebeurtenis definieert.

Bijvoorbeeld grafische componenten zoals een JButton of JTextField staan ​​bekend als evenement bronnen. Dit betekent dat ze evenementen kunnen genereren (genaamd gebeurtenisobjecten), Zoals het verstrekken van een JButton voor een gebruiker om te klikken, of een JTextField waarin een gebruiker tekst kan invoeren. De taak van de luisteraar van het evenement is om die evenementen te vangen en er iets mee te doen.

Hoe gebeurtenisluisteraars werken

Elke gebeurtenislistener-interface bevat ten minste één methode die wordt gebruikt door de equivalente gebeurtenisbron.

Laten we voor deze discussie een muisgebeurtenis overwegen, d.w.z. elke keer dat een gebruiker op een muis klikt, vertegenwoordigd door de Java-klasse MouseEvent. Om dit soort gebeurtenis af te handelen, zou u eerst een MouseListener klasse die de Java implementeert MouseListener koppel. Deze interface heeft vijf methoden; implementeer degene die betrekking heeft op het type muisactie dat u van uw gebruiker verwacht. Dit zijn:

  • void mouseClicked (MouseEvent e)

    Wordt opgeroepen wanneer op een muisklik op een component is geklikt (ingedrukt en losgelaten).
  • void mouseEntered (MouseEvent e)

    Wordt opgeroepen wanneer de muis een component invoert.
  • void mouseExited (MouseEvent e)

    Wordt opgeroepen wanneer de muis een component verlaat.
  • void mousePressed (MouseEvent e)

    Wordt opgeroepen wanneer op een component op een muisknop is gedrukt.
  • void mouseReleased (MouseEvent e)

    Wordt opgeroepen wanneer een muisknop op een component is losgelaten

Zoals u ziet, heeft elke methode een enkele parameter voor een gebeurtenisobject: de specifieke muisgebeurtenis waarvoor deze is ontworpen. In uw MouseListener klas, jij registreren om naar deze gebeurtenissen te 'luisteren', zodat u op de hoogte wordt gebracht wanneer ze zich voordoen.

Wanneer de gebeurtenis wordt geactiveerd (bijvoorbeeld, klikt de gebruiker op de muis, volgens de mouseClicked () methode hierboven), een relevante MouseEvent object dat die gebeurtenis vertegenwoordigt, wordt gemaakt en doorgegeven aan de MouseListener object geregistreerd om het te ontvangen. 

Soorten gebeurtenisluisteraars

Luisteraars van evenementen worden vertegenwoordigd door verschillende interfaces, die elk zijn ontworpen om een ​​gelijkwaardige gebeurtenis te verwerken.

Houd er rekening mee dat gebeurtenisluisteraars flexibel zijn doordat een enkele luisteraar kan worden geregistreerd om naar meerdere typen gebeurtenissen te 'luisteren'. Dit betekent dat voor een vergelijkbare set componenten die hetzelfde type actie uitvoeren, één gebeurtenislistener alle gebeurtenissen kan verwerken.

Hier zijn enkele van de meest voorkomende typen:

  • ActionListener: Luistert naar een ActionEvent, d.w.z. wanneer op een grafisch element wordt geklikt, zoals een knop of item in een lijst.
  • ContainerListener: Luistert naar een ContainerEvent, die kan optreden als de gebruiker een object toevoegt of verwijdert uit de interface.
  • KeyListener: Luistert naar een Sleutelmoment waarin de gebruiker een toets indrukt, typt of loslaat.
  • WindowListener: Luistert naar een WindowEvent, bijvoorbeeld wanneer een venster wordt gesloten, geactiveerd of gedeactiveerd.
  • MouseListener: Luistert naar een  MouseEvent, zoals wanneer op een muis wordt geklikt of gedrukt.