IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Tester si la methode associer a addActionListener a fonctionner


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut Tester si la methode associer a addActionListener a fonctionner
    Bonjour je développe une application dans laquelle une fenetre JFrame apparait pour que l utilisateur saisisse ses identifiants. Une fois saisi, il clique sur le bouton connexion qui verifie dans une base de donnée si les identifiants sont exactes puis qui doit se connecter a un serveur via les socket.

    Le probleme est que meme si les identifiants sont incorrects le programme se connecte quand meme au serveur.

    voici la partie du code qui pose probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    
    public class Fenetreconnexion extends JFrame {
    	
    		protected JTextField ztlog;
    		protected JPasswordField ztmdp;
    		protected JButton bouton;
    		protected JLabel lbllog ;
    		protected JLabel lblmdp;
    		protected JLabel lblimg;
    		protected ImageIcon fondecran;
    		protected JPanel panel;
    		
    		public Fenetreconnexion (){
    			
    			super();
    			build();//initialisation de la fenetre
    			
    		}
    		
    		private void build(){
    			
    	                
    			setTitle("Fenetre de connexion");
    			setSize(400,200);
    			setLocationRelativeTo(null);//fenetre centree
    			setResizable(false);//interdit de redimensionner la fenetre
    			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			
    			setContentPane(buildContentPane());
    	           
    			
    		}
    		
    		
    		private JPanel buildContentPane(){
    			
    			
    			       panel = new JPanel();// creation de la fenetre
    			       panel.setLayout(null);//utilise pas les layout pour pouvoir utiliser les coordonnées xy
    			
    	                //creation des boutons et zone de texte
    	                bouton = new JButton ("Connexion");
    			        lbllog = new JLabel("Login");
    			        lblmdp = new JLabel("Password");
    	                lblimg = new JLabel();
    	                //Fenetreconnexion.ztlog = new JTextField();
    	                //Fenetreconnexion.ztmdp = new JPasswordField();
    	                ztlog = new JTextField();
    	                ztmdp = new JPasswordField();
    	                fondecran = new ImageIcon("/home/gwen/Desktop/amsky/amsky.jpg");
    	                
    	                //traitement du bouton "connexion"
    	                BddConnexion bdd = new BddConnexion(this);
    	                client clt = new client();
    	                bouton.addActionListener(bdd);//chargé de verifier les identifians dans la bdd
    	                
    	                if (bdd.connecte==true){
    	                     bouton.addActionListener(clt);//connexion au serveur.
    	                }
    	                
    	                bouton.setDefaultCapable(true);
    	                this.getRootPane().setDefaultButton(bouton);
    	          
    	                
    	                
    	                //placement des boutons et zone de texte
    	                lbllog.setBounds(50, -15, 100, 100);
    	                ztlog.setBounds(120,27, 180,20);
    	                lblmdp.setBounds(50, 19, 100, 100);
    	                ztmdp.setBounds(120, 60, 180, 20);
    	                bouton.setBounds(120, 100, 180, 50);
    	                lblimg.setIcon(fondecran);
    	                lblimg.setBounds(0,0,400,200);
    	                
    	                //ajout des boutons et zone de texte a la fenetre
    	                panel.add(lbllog);
    	                panel.add(ztlog);
    	                panel.add(lblmdp);
    	                panel.add(ztmdp);
    			        panel.add(bouton);
    	                panel.add(lblimg);
    	                
    	                
    			return panel;
    			
    			
    			
    		}
    Est ce que quelqu'un aurait une idée pour savoir si le premier actionlistener ( bouton.addActionListener(bdd)) a fonctionné?

    merci

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    C'est un de conception de ton code.

    bouton.addActionListener(bdd) va faire en sorte que actionPerformed de bdd soit appelé si bouton est actionné.
    Mais la suite du code va être exécutée sans attendre que le bouton soit actionné, donc bdd.connecte devrait théoriquement valoir false. Ce qui est dans le if ne devrait jamais être exécuté.

    Je pense que quelque chose comme ça serait plus adapté (il faut faire un thread pour ne pas bloquer l'ihm, voir : Threads et performance avec Swing) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    bouton.addActionListener(new ActionListener() {
        new Thread(new Runnable() {
            public void run() {
                BddConnexion bdd = new BddConnexion(this);
                if (bdd.connecte==true) { // test si on l'utilisateur a les droits
    	        SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            new client(); //connexion au serveur.
                        }
                    });
    	    }
            }
        }).start();
    });

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Merci je vais lire le tuto sur les Thread et tester sa!

  4. #4
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    Malgré le tuto (que j ai du mal a comprendre) je n arrive toujours pas a resoudre mon probleme!

    J'ai aussi vu qu une methode ChangeListener existait, ne serait ce pas celle la qu il faut employer?

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Ce que tu veux, c'est bien récupérer l'action sur ton bouton? donc c'est un ActionListener.

    Dans cette action tu dois te connecter à la base de données et vérifier que l'utilisateur à les droits. Ensuite, si il a les droits, tu dois créer un nouveau client qui va se connecter au serveur.

    Ton code ne reprend pas vraiment cet algorithme, tu vérifies directement si bdd.connecte=true alors que l'utilisateur n'a pas actionné le bouton.

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 141
    Par défaut
    oui je veux bien recuperer l action du bouton!

    Le addActionListener n'est pas declenché au moment ou l'on actionne le bouton?

    Je suppose que les Threads permettent de le faire mais je n'ai pas très bien compris comment les utilisés ni ce qu'il font vraiment.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/04/2013, 16h22
  2. Réponses: 1
    Dernier message: 23/05/2008, 09h14
  3. Réponses: 1
    Dernier message: 22/03/2007, 08h39
  4. [JUnit] Pour tester les methodes d'acces à une sgdb
    Par yanis97 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/04/2004, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo