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