joi, 7 februarie 2019

Tehnici de tratare a evenimentelor

Salut! În postările anterioare am expus algoritmul general de tratare a evenimentelor. Aici voi expune câteva tehnici care au bază acest algoritm, însă sunt structurate diferit. Din câte am reușit eu să studiez, am depistat trei tehnici. În cazul în care cunoașteți o altă tehnică aș fi recunoscătoare dacă ați descrie în comentariu pentru cititorii blog-ului. 

Deci, un eveniment poate fi tratat: 
1) în aceeași clasă cu ascultătorul

import java.awt.*; 
import java.awt.event.*;
class Tehnica_1 extends Frame implements ActionListener{
 TextField tf;

 Tehnica_1(){
  super("Aplicatia mea");
  setLayout(null);
  tf=new TextField();
  tf.setBounds(60,50,150,20);
  Button b=new Button("ok");
  b.setBounds(100,120,80,30);
  b.addActionListener(this);
  add(b);

  add(tf);
  setSize(300,200);
  setVisible(true);
 }
public void actionPerformed(ActionEvent e){
tf.setText("A fost click pe button!"); 
}

public static void main(String args[]){ 
 new Tehnica_1(); 
}
}

2) într-o clasă separată:
//clasa design
import java.awt.*;
class Tehnica_2 extends Frame{
 TextField tf;
 Tehnica_2(){
  super("Aplicatia mea"); setLayout(null);
  tf=new TextField();
  tf.setBounds(60,50,150,20);
  Button b=new Button("click me!");
  b.setBounds(100,120,80,30);
  b.addActionListener(new Extern(this));
  add(b);
  add(tf);
  setSize(300,200); 
  setVisible(true);
}
public static void main(String args[]){ 
 new Tehnica_2(); 
}

//clasa funcționalitate
import java.awt.event.*;
class Extern implements ActionListener{
Tehnica_2 obj;
Extern(Tehnica_2 obj){ this.obj=obj; }
public void actionPerformed(ActionEvent e){
obj.tf.setText("A fost click pe buton");
}
}

3) într-o clasă anonimă

import java.awt.*;
import java.awt.event.*;
class Tehnica_3 extends Frame{
TextField tf;
 Tehnica_3 (){
 setLayout(null);
 tf=new TextField(); 
 tf.setBounds(60,50,170,20);
 Button b=new Button("click me"); 
 b.setBounds(50,120,80,30);
 b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
     tf.setText("a fost click ");
    }
 });

add(b);
add(tf);
setSize(300,300); 
setVisible(true);
}
public static void main(String args[]){ 
   new Tehnica_3 ();
}
}

Indiferent ce tehnică veți utiliza rezultatul va fi același: 


Stimați cititori, în special cei care activează ca programatori, scrieți în comentariu care este metoda utilizată în practică la elaborarea proiectelor reale! Mulțumesc anticipat! 

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

Este binevenit orice comentariu!

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













Clasele Adapter

Salut! După cum am promis anterior, revin cu o postare despre utilitatea claselor Adapter.
Analizând atent ultimul tabel expus în postarea https://musteatadidactic.blogspot.com/2019/02/tratarea-evenimentelor-java-ii.html, veți observa că sunt interfețe ascultător ce conțin două sau mai multe metode. 

Despre interfețe deja cunoaștem că, atunci cînd o clasă implementează o interfață aceasta trebuie să conțină cod pentru toate metodele interfeței. 

Cum procedăm atunci cînd apare necesitatea ca să fie implementată o singură metodă? 

De exemplu, este necesar tratarea evenimentului click pe buton folosind interfața MouseListener. Clasa ascultătoare de eveniment va fi constrânsă să implementeze toate cele cinci metode ale interfeței date. Aici sunt utile clasele Adapter care vor permite tratarea doar a evenimentului necesar printr-o construcție de forma:


Voi rescrie, folosind clasa MouseAdapter, codul sursă din exemplul explicat aici https://musteatadidactic.blogspot.com/2019/02/tratarea-evenimentelor-java-ii.html prin programarea evenimentului mouseClicked() din interfața MouseListener() 


import java.awt.*;
class Aplicatia_Mea2 extends Frame {
 Aplicatia_Mea2(String s){
  super(s);
  setSize(350,100);
  setLayout(new FlowLayout());
  Button b1 = new Button("Ok!");
  b1.addMouseListener(new java.awt.event.MouseAdapter() {
         public void mouseClicked(java.awt.event.MouseEvent evt) {
          setTitle("eveniment generat, capturat si tratat");
         }
        });
  add(b1);
  setVisible(true);
 }
}
public class Test_Adapter {
 public static void main(String[] args) {
     new Aplicatia_Mea2("Exemplu adapter");
}}



Fiecărei interfețe de tip Listener îi corespunde o clasă de tip Adapter.

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

Este binevenit orice comentariu!

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