ActionPerformed dans une autre classe

Signaler
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010
-
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
-
Bonjour mon problème c'est que je n'arrive pas a utilisé la méthode actionPerformed(...) de ma classe FenetreLogin dans une autre classe.

je veux récupèrer ce qui est écris dans un jtextfield après avoir cliquer sur le bouton, et utilisé ce String pour faire le test décris en bas.

public class FenetreLogin extends JFrame implements ActionListener{

       public FenetreLogin fenetre;
       public JTextField jtf = new JTextField();
       JPasswordField jpf = new JPasswordField();
       JLabel jlab1 = new JLabel();
       JLabel jlab2 = new JLabel();
       JLabel jlab3 = new JLabel();
       JButton button = new JButton();
       public String texteUtilisateur;


public void actionPerformed(ActionEvent e) { //  version 2
                if (e.getSource()== button)
texteUtilisateur = jtf.getText();
                System.out.println(texteUtilisateur);
                System.exit(0);

}



le test


while (sortieDeBoucle == true) {

                        FenetreLogin FL = new FenetreLogin();
                        String nomCli = FL.texteUtilisateur;
                       
                         System.out.println(nomCli);

//String nomChoisi = br.readLine();
if (nomCli.length() > 3) {
nomClient = nomCli;
sortieDeBoucle = false;
} else {
System.out.println("Nom trop court");
}


}


mais quand j'ai fais un affichage je vois que nomCli est null.
Vous pouvez m'aider s'il vous plait.

4 réponses

Messages postés
50
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
21 août 2013

Salut,

Fais un système de récupération avec une méthode public get (getText ou obtenirTexte) dans ta classe FenetreLogin et ce sera déjà mieux.

Pour l'histoire du null ça doit être ça :

// Initialisation de la classe avec les valeurs par défaut.
FenetreLogin FL = new FenetreLogin();

// Initialisation de la valeur avec les données par défaut
// ou modifiées par le constructeur mais comme je ne le vois pas ici
// je dirais que public String texteUtilisateur = null;
String nomCli = FL.texteUtilisateur;

// Lecture de la valeur et affichage dans la console de sortie (null).
System.out.println(nomCli);

// L'action suivante devrait être :
System.out.println("Nom trop court");


Je te conseille aussi d'utiliser des boites de dialogue, que tu les conçoivent ou non. Je pense que ce serait mieux qu'un JFrame pour un login.

Courage.
Messages postés
16
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
21 mai 2010

Merci, mais moi je veux récupérer le texte saisi dans le champs JTextField après avoir appuyer sur le bouton, donc je crois que je suis obliger de garder la méthode ActionPerformed.
Dans la classe client je veux que quand un client tente de se connecté ya la fenêtre de login qui sorte et attend que le client tape son identifiant, et après pour le récupérer, il faut qu'il appui sur le bouton.
Messages postés
50
Date d'inscription
lundi 7 avril 2003
Statut
Membre
Dernière intervention
21 août 2013

C'est tout à fait normal d'utiliser actionPerformed.... Je l'utilise aussi pour mes dialogues.

Exemple (extrait car c'est plus compliqué) :

OK_Button.setText("OK");
OK_Button.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        OK_ButtonActionPerformed(evt);
    }
});
getContentPane().add(OK_Button);
OK_Button.setBounds(250, 270, 100, 23);

//(...)

private void OK_ButtonActionPerformed(java.awt.event.ActionEvent evt) {
    bp = ButtonPressed.OK_BUTTON;
    dispose();
}

//(...)

public Font showDialog(Font f){
    setFont(f);
    setVisible(true);
        
    if(bp.equals(ButtonPressed.OK_BUTTON)){
        return getFont();
    }else{
        return f;
    }
}

// où :
// ButtonPressed est juste une énumération
// bp un objet contenant un de ses états :
// - NONE si la classe vient d'être lancée
// - OK_BUTTON pour quand on appuie sur le bouton 'OK'
// - CANCEL_BUTTON pour quand on appuie sur le bouton 'Annuler'

public enum ButtonPressed{
    NONE, OK_BUTTON, CANCEL_BUTTON;
}


Note : C'est fait avec un IDE, pour ça que actionPerformed pointe vers une autre méthode en transmettant des paramètres si tu te poses la question.

Enfin voilà, essaie de faire autre chose sur ton code et au besoin poste-le ici. Personnellement, j'ai commencé à faire comme toi avec des JFrame mais bon je me suis mis au JDialog finalement.
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
5
Salut,

tu as ajouté le listener à ton bouton ?