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