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 :

Probleme pour la methode ActionPerfomed()


Sujet :

Java

  1. #1
    Membre du Club
    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
    Points : 66
    Points
    66
    Par défaut Probleme pour la methode ActionPerfomed()
    Bonjour je realise une fenetre de connexion qui contient un champ text (JTextField) pour le login, un autre pour le mot de passe et un bouton de connexion a une base de données mysql.

    voici les classes :

    classe Fenetreconnexion :

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    import java.sql.*;
    import java.awt.event.*;
    import java.lang.Runnable;
    import javax.swing.*; 
    import java.util.*;
    
    	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();
    	                ztlog = new JTextField();
    	                ztmdp = new JPasswordField();
    	                fondecran = new ImageIcon("amsky.jpg");
    	                
    	                //traitement du bouton "connexion"
    	                BddConnexion bdd = new BddConnexion();
    	                bouton.addActionListener(bdd);
    	                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;
    			
    			
    			
    		}
    		
    
    		
    		    
    	        public static void main (String [] args){
    		     
    		       SwingUtilities.invokeLater(new Runnable(){
    			
    			public void run(){
    				
    				Fenetreconnexion fenetre = new Fenetreconnexion();
    				fenetre.setVisible(true);
    				
    				
    			}
    			
    			
    			
    		});
    		
    		
    		
    		}
    		
    	}
    la classe BddConnexion :

    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
    90
    91
     
     
      import java.sql.*;
    import java.awt.event.*;
    import java.lang.Runnable;
    import javax.swing.*; 
    import java.util.*;
     
     
    public class BddConnexion extends Fenetreconnexion implements ActionListener{
     
     
     
    	public void actionPerformed(ActionEvent evt){
     
    		Object src = evt.getClass();
    		Fenetreconnexion f=(Fenetreconnexion)src; 
    		String user = "";
    		String mdp = "";
     
    		String pilote = "com.mysql.jdbc.Driver";
     
    		src = evt.getSource();
     
    		if(src == bouton){
     
     
               try{
     
    				Class.forName(pilote);
    				Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/amsky",user,mdp);
    				Statement s = c.createStatement();
    				ResultSet r = s.executeQuery("SELECT * from user");
    				boolean fini = false;
    				String log1, log2;
     
     
     
    				while((r.next())&&(fini==false)){
     
    					//System.out.println(r.getString("login"));
     
    					log1=r.getString("login");
    					//System.out.println(log1);
    					log2=f.ztlog.getText();
    					if (log1.equals(log2)){
     
     
    						fini=true;
    						log1=r.getString("mdp");
    						log2=f.ztmdp.getText();
    						if (log1.equals(log2)){
     
    							System.out.println("Connexion réussie");
    							f.setVisible(false);
    							//server srv = new server();
    							//srv.show();
     
    						}else{
     
     
    							System.out.println("Mot de passe éroné");
     
    						}
     
    					}
     
    				}	
    				if (fini==false){
     
    					System.out.println("Le login "+ f.ztlog.getText()+ " n'existe pas");
     
    				}
     
     
    			}catch (Exception e){
     
    				System.out.println("Echec pilote : " + e);
     
    			}
     
     
    		}
     
     
     
    	}
     
     
     
    }
    La création de la fenetre se passe normalement le probleme est lorsque j'instancie un objet de type BddConnexion(Ligne en gras dans la classe Fenetreconnexion) le programme me retourne un tas d'erreur que je ne comprends pas.

    Lorsque je met cette ligne en commentaire tout se passe bien pour la creation de la fenetre.

    Est ce que quelqu'un pourrait m'aider pour trouver ce qu'il ne vas pas? merci

    ps : voici les erreurs retournées par eclipse

    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
     
     
    Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
    	at javax.swing.text.StyleContext$SmallAttributeSet.containsAttributes(StyleContext.java:959)
    	at javax.swing.text.StyleContext$SmallAttributeSet.equals(StyleContext.java:838)
    	at java.util.WeakHashMap.eq(WeakHashMap.java:254)
    	at java.util.WeakHashMap.get(WeakHashMap.java:345)
    	at java.util.Collections$SynchronizedMap.get(Collections.java:1979)
    	at javax.swing.text.StyleContext.getImmutableUniqueSet(StyleContext.java:503)
    	at javax.swing.text.StyleContext.addAttributes(StyleContext.java:323)
    	at javax.swing.text.AbstractDocument$AbstractElement.addAttributes(AbstractDocument.java:1990)
    	at javax.swing.text.AbstractDocument$AbstractElement.<init>(AbstractDocument.java:1781)
    	at javax.swing.text.AbstractDocument$LeafElement.<init>(AbstractDocument.java:2505)
    	at javax.swing.text.AbstractDocument$BidiElement.<init>(AbstractDocument.java:2677)
    	at javax.swing.text.AbstractDocument.<init>(AbstractDocument.java:131)
    	at javax.swing.text.AbstractDocument.<init>(AbstractDocument.java:91)
    	at javax.swing.text.PlainDocument.<init>(PlainDocument.java:74)
    	at javax.swing.text.PlainDocument.<init>(PlainDocument.java:64)
    	at javax.swing.text.DefaultEditorKit.createDefaultDocument(DefaultEditorKit.java:113)
    	at javax.swing.plaf.basic.BasicTextUI.installUI(BasicTextUI.java:698)
    	at javax.swing.plaf.basic.BasicTextFieldUI.installUI(BasicTextFieldUI.java:57)
    	at javax.swing.JComponent.setUI(JComponent.java:653)
    	at javax.swing.text.JTextComponent.setUI(JTextComponent.java:298)
    	at javax.swing.text.JTextComponent.updateUI(JTextComponent.java:308)
    	at javax.swing.text.JTextComponent.<init>(JTextComponent.java:282)
    	at javax.swing.JTextField.<init>(JTextField.java:207)
    	at javax.swing.JTextField.<init>(JTextField.java:148)
    	at Fenetreconnexion.buildContentPane(Fenetreconnexion.java:57)
    	at Fenetreconnexion.build(Fenetreconnexion.java:38)
    	at Fenetreconnexion.<init>(Fenetreconnexion.java:25)
    	at BddConnexion.<init>(BddConnexion.java:11)
    	at Fenetreconnexion.buildContentPane(Fenetreconnexion.java:62)
    	at Fenetreconnexion.build(Fenetreconnexion.java:38)
    	at Fenetreconnexion.<init>(Fenetreconnexion.java:25)
    	at BddConnexion.<init>(BddConnexion.java:11)
    	at Fenetreconnexion.buildContentPane(Fenetreconnexion.java:62)
    	at Fenetreconnexion.build(Fenetreconnexion.java:38)
    	at Fenetreconnexion.<init>(Fenetreconnexion.java:25)
    	at BddConnexion.<init>(BddConnexion.java:11)
    	at Fenetreconnexion.buildContentPane(Fenetreconnexion.java:62)
    	at Fenetreconnexion.build(Fenetreconnexion.java:38)
    	at Fenetreconnexion.<init>(Fenetreconnexion.java:25)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    tu as créé une boucle infinie
    BddConnexion est une Fenetreconnexion.
    A la construction de Fenetreconnexion, tu créés une BddConnexion.
    Le constructeur de BddConnexion est celui par défaut de Fenetreconnexion, donc il créé lui-même une nouvelle BddConnexion, et ainsi de suite jusqu'à utiliser toute la mémoire disponible.
    Tu as un problème de conception.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club
    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
    Points : 66
    Points
    66
    Par défaut
    Merci j'ai pu resoudre mon probleme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme pour retrouver les methodes dans la classe instancié
    Par philo71 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/05/2008, 09h26
  2. Probleme avec la methode SetVolume pour la Speech API
    Par Jim_Nastiq dans le forum Windows
    Réponses: 1
    Dernier message: 03/05/2007, 14h58
  3. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 10h55
  4. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39
  5. Réponses: 2
    Dernier message: 30/05/2002, 08h54

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