Se afișează postările cu eticheta evenimente java. Afișați toate postările
Se afișează postările cu eticheta evenimente java. Afișați toate postările

miercuri, 6 februarie 2019

Tratarea evenimentelor Java (I).

Un eveniment este o acțiune a utilizatorului asupra unei componente grafice și reprezintă mecanismul prin care utilizatorul comunică efectiv cu programul. 

De exemplu: 
1) acționarea unui buton;
2) tastarea unei taste;
3) mutarea unei componente cu butonul mouse-ului;
4) închiderea unei ferestre;
5) redimensionarea unei ferestre, ș.a

Toate componentele generează evenimente atunci când utilizatorul acționează asupra acestora într-un anumit mod. 


Evenimentele sunt de diferite tipuri fiecare tip fiind reprezentat de o clasă distinctă. Programatorul nu se va preocupa de generarea evenimentelor, deoarece acestea sunt generate în mod automat atunci cînd utilizatorul interacționează cu aplicația. Însă programatorul trebuie să indice instrucțiunile care vor fi executate în momentul în care apar aceste evenimente. 



Atunci când este lansat un eveniment, acesta este capturat de unul sau mai mulți ascultători. 

Un ascultător este o clasă ce implementează interfețe de tip Listener definite în pachetul java.awt.event și care au ca scop capturarea și tratarea evenimentului generat.

Atunci cînd se dorește tratarea evenimentelor, programatorul trebuie să creeze un obiect ascultător și apoi să îl înregistreze la componenta grafică care a generat evenimentul. 

Înregistrarea se face prin apelarea metodei addXListener(XListener listener) asupra componentei care lansează evenimentul, unde X reprezintă tipul de eveniment pentru care se înregistrează ascultătorul. 
De exemplu : addWindowListener(...), addItemListener(...)

Mecanismul gestionării evenimentelor în Java poate fi reprezentată schematic astfel: 


Componenta reprezintă sursa de evenimente.
Eveniment este generat de o componentă.
Ascultătorul sau Listener-ul captează și tratează evenimentul generat.


Pentru a trata un eveniment se va respecta la general următorul algoritm (pentru exemplificare vom trata evenimentul click cu mouse-ul pe o componentă): 

1. clasa ce conține componenta care va genera evenimentul trebuie să implementeze o interfață Listener, sau să extindă o clasă care deja implementează această interfață: 

public class ClasaMea implements ActionListener { ... }

2. ascultătorul de evenimente se înregistrează la sursa de evenimente prin intermediul metodei addXListener(XListener listener)

oComponenta.addActionListener(instantaClasaMea); 

3. ascultătorul implementează metodele interfeței de ascultare: 
       public void actionPerformed(ActionEvent e) { 

        ...//codul ce se va executa ca răspuns la eveniment 

       }


Exemplu:

import java.awt.*;
import java.awt.event.*;
class Aplicatia_Mea extends Frame implements ActionListener{
 Aplicatia_Mea(String s){
  super(s);
  setSize(350,100);
  setLayout(new FlowLayout());
  Button b1 = new Button("Ok!");
  b1.addActionListener(this);
  add(b1);
  setVisible(true);
 }
@Override
public void actionPerformed(ActionEvent e) {
 this.setTitle("generat, capturat si tratat");
}}
public class Test_OnLick {
 public static void main(String[] args) {
     new Aplicatia_Mea("Exemplu de eveniment");
}}
Lansată la execuția aplicația va avea aspectul:




După executarea butonul ok!  va fi modificat corespunzător titlul ferestrei:





Aceasta este una din modalitățile prin care putem trata evenimente în Java. Analogic se respectă acești pași și pentru celelate tipuri de evenimente, diferență fiind interfața cu care se lucrează. 

Există și alte tehnici despre care voi expune în una din următoarele postări. La fel și despre alte tipuri de evenimente ce pot fi tratate.

Sper că această postare vă este utilă. 

Este binevenit orice comentariu! 

Să aveți parte de o zi extraordinară !!!!!