bonjour
je pense que la question que je vais vous poser, vous l'avez dejà vu plein de fois..
je commence à peter un boulon lol car impossible de résoudre mon soucis, meme apres des recherches sur google et sur ce site.
mon erreur : echec pilote : java.lang.NullPointerException
(j'utilise JDBC pour connexion à Mysql)
j'ai lu pour ce genre d'erreur : "appel d'une methode ou utilisation d'un champ avec réference null" mais dans mon code je ne vois pas où il y a un null....
voici le code qui me permet d'effectuer l'addition des prix correspondant au nom des elements cochés
voilà...
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.Enumeration; import java.util.Hashtable; import java.util.Properties; import java.math.BigDecimal; public class carte extends JFrame implements ActionListener //, ItemListener //implements ItemListener { // Properties : Cette classe est un dictionnaire permettant d'associer deux chaînes de caractères. private Properties props = new Properties(); // Hashtable() : permet de stocker des valeurs en les associant à des // identificateurs uniques calculés à partir de clés private Hashtable associationProduitsPrix = new Hashtable(); private JPanel panel;//Déclaration de l'objet JPanel private JLabel prixx, type; private JButton bouton; private Checkbox sale,chek; public carte() { panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT,5,2)); String pilote = "com.mysql.jdbc.Driver"; try { //Chargement de mon pilote Class.forName(pilote); //Connexion à ma base mysql avec mon login et mot de passe Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/creperie","root","root"); //Création de mon statement qui va me permettre d'executer mes requetes Statement instruction = connexion.createStatement(); ResultSet resultatt = instruction.executeQuery("SELECT DISTINCT type FROM carte "); while(resultatt.next()) { type = new JLabel(resultatt.getString("type")); panel.add(type); Statement instructionn = connexion.createStatement(); ResultSet resultat = instructionn.executeQuery("SELECT nom, prix FROM carte WHERE type = '"+resultatt.getString("type")+"'"); while(resultat.next()) { String nom = props.getProperty(resultat.getString("nom")); sale = new Checkbox(nom); String prix = props.getProperty(resultat.getString("prix")); prixx = new JLabel(prix); Produit produit = new Produit(); produit.setPrix(new BigDecimal(prix)); //sale.addItemListener(this); //panel.add(type); panel.add(sale); associationProduitsPrix.put(sale,produit); } } } catch (Exception e) { System.out.println("echec pilote : "+e); } bouton = new JButton("ticket"); panel.add(bouton); bouton.addActionListener(this);//On ajoute la fenêtre en tant qu'écouteur du bouton*/ } /*Checkbox che; public void itemStateChanged(ItemEvent evt) { che= (Checkbox)evt.getSource(); }*/ public void actionPerformed(ActionEvent e) { if(e.getSource() == bouton) { BigDecimal total = new BigDecimal("0"); //initialise à 0 Enumeration enu = associationProduitsPrix.keys(); while (enu.hasMoreElements()) { chek = (Checkbox)enu.nextElement(); if (chek.getState()) { Produit produit = (Produit)associationProduitsPrix.get(chek); BigDecimal prix = produit.getPrix(); total = total.add(prix); } } JOptionPane.showMessageDialog(null, "total :" +total); } } }
merci ebaucoup de vouloir m'aider.
en attendant je vais continuer à chercher..
Partager