next up previous
Next: Coercions de types Up: No Title Previous: No Title

Rappel sur les évènements

L'intérêt des classes internes (et anonymes) est de faciliter la communication entre les composants (source d'évènements) et les délégués (qui traiteront cet évènement). On reprend pour cela l'exemple du TD5 sur l'identification d'un utilisateur à partir d'un login et un mot de passe. Pour cela on va réécrire cet exemple en rendant global le traitement de l'évènement déclenché par un des deux textField. On rappelle le code suivant :

Fichier : TD6ex/passwd/ex1/passwdTest.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class passwdTest extends Applet { 

String monlogin  ="tartempi";
String monpasswd ="itaparit";
TextField login;
TextField passwd;
boolean OK = false;

ActionListener RC = new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    if ((e.getSource() == login) || (e.getSource() == passwd))
    { if ((login.getText().equals(monlogin)) &&
         (passwd.getText().equals(monpasswd)))
      {OK=true; good();}
      else {nogood();}
    }
  }
};

  public void init() {
    login = new TextField(8);
    passwd = new TextField(8);
    add(new Label("Login : "));
    add(login);
    add(new Label("Password : "));
    passwd.setEchoChar('*');
    add(passwd);
    login.addActionListener(RC);
    passwd.addActionListener(RC);  
  }
 
  public void good() {
    resize(120,180);
    this.getGraphics().drawString("c'est parti...",10,150);
  }
 
  public void nogood() {
    this.getGraphics().drawString("identification incorrecte",10,100);
  }
}

1.
Comment le délégué peut-il vérifier le contenu des champs de texte s'il devient une classe à part entière?
2.
Ecrire une classe AdaptateurAction au niveau global implantant l'interface ActionListener.
3.
Enregistrer une instance de cette classe sur les 2 champs de texte.
4.
Ajouter à l'applet un bouton (Button) et enregistrer l'instance d'AdaptateurAction sur ce bouton. Que se passe-t-il si on clique sur ce bouton?
5.
Que se passe-t-il si on enlève le test des sources?


Emmanuel CHAILLOUX
12/14/1997