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 :
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);
}
}