oceane751 Posté(e) le 16 avril 2007 Partager Posté(e) le 16 avril 2007 bonjour à tous!! je suis entrain de me prendre la tete depuis quelques heures sur mes JRadioButton. je n'arrive pas à récuperer leur label voici mon code : public class ajouter extends JFrame implements ActionListener, ItemListener { private Button bouton; private TextField nom, prix; private JPanel panel; private JRadioButton box; private ButtonGroup group; private JLabel lab; private JFrame frame; public ajouter() { super(); panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT,4,2)); nom = new TextField("nom", 10); prix = new TextField("prix en ¤", 10); nom.setBackground(Color.yellow); panel.add(nom); panel.add(prix); 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 ( à vous de changer cela) 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(); //Ma table s'appelle creperie et tout ce qui reste dépend d'elle //Vous devez changer certaines infos comme le nom de la table et celui des colonnes ResultSet resultat = instruction.executeQuery("SELECT DISTINCT type FROM carte"); JLabel lab = new JLabel("type"); panel.add(lab); while(resultat.next()) { String resul = resultat.getString("type"); box = new JRadioButton(resul, false); group = new ButtonGroup(); group.add(box); box.addItemListener(this); panel.add(box); } } catch (Exception e) { System.out.println("echec pilote : "+e); } bouton = new Button("ajouter"); panel.add(bouton); bouton.addActionListener(this); JFrame frame = new JFrame(); frame.setContentPane(panel); frame.setSize(300,300); frame.setVisible(true); } public void itemStateChanged(ItemEvent evt) { Object obj = evt.getItem(); ??? } public void actionPerformed(ActionEvent e) { if ( (Button) e.getSource() == bouton ) { JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+obj ); } } } } ICI ==> type :"+obj ); j'aimerai faire apparaitre la valeur du bouton radio coché.. de plus, j'utillise ButtonGroup() afin de ne pouvoir coché qu'un bouton radio, mais au lieu de ça, cela m'en coche plusieurs et il est impossible de les deselectionner si quelqu'un pourrait m'aider car là je en sais plus quoi faire ... merci !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 16 avril 2007 Partager Posté(e) le 16 avril 2007 Regarde l'exemple de chez Sun, tout en bas : http://java.sun.com/docs/books/tutorial/ui...nts/button.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
oceane751 Posté(e) le 16 avril 2007 Auteur Partager Posté(e) le 16 avril 2007 ah ouias pas mal!! j'ai essayé de l'adapter comme voici : ResultSet resultat = instruction.executeQuery("SELECT DISTINCT type FROM carte"); JLabel lab = new JLabel("type"); panel.add(lab); while(resultat.next()) { String resul = resultat.getString("type"); box = new JRadioButton(resul); box.setActionCommand(resul); group = new ButtonGroup(); group.add(box); box.addActionListener(this); panel.add(box); } bouton = new Button("ajouter"); panel.add(bouton); bouton.addActionListener(this); public void actionPerformed(ActionEvent e) { if ( (Button) e.getSource() == bouton ) { String nomm = nom.getText(); String prixx = prix.getText(); JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+e.getActionCommand() ); } } mais 'jai quelques erreurs : Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JRadioButton at ajouter.actionPerformed(ajouter.java:102) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) je en sais pas d'où ça sort, bouuu jvais jamais y arriver.. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 16 avril 2007 Partager Posté(e) le 16 avril 2007 C'est parce que tu castes le résultat de "e.getSource()" (de type Object) en Button sans avoir préalablement vérifié la compatibilité des types. C'est maaal ! Et puis, regarde bien l'exemple de chez Sun : il suffit de tester e.getActionCommand() pour savoir lequel de tes boutons a déclenché l'événement (ou aucun d'entre eux). Lien vers le commentaire Partager sur d’autres sites More sharing options...
oceane751 Posté(e) le 16 avril 2007 Auteur Partager Posté(e) le 16 avril 2007 est ce que tu pourrais m'expliquer cette phrase : "sans avoir préalablement vérifié la compatibilité des types" ? merci beaucoup.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 16 avril 2007 Partager Posté(e) le 16 avril 2007 Hé bien, comme je l'ai dit plus haut, e.getSource() te donne l'objet qui a déchenché l'événement. Cet objet peut être à priori n'importe quel widget graphique (Button, JList, JTree...), mais toi, tu castes arbitrairement en "Button" sans te poser de question. Mais pas de chance, un des événements n'a pas été déclenché par un "Button", donc ton cast déclenche l'erreur que tu as marquée plus haut. La solution consiste donc à vérifier d'abord le type réel de l'objet avant d'effectuer le case : Object source = e.getSource(); if (source instanceof Button) { Button b = (Button) source; // et maintenant tu peux effectivement utiliser l'objet b de type Button } else { // pas de chance, l'événement n'a pas été déclenché par un objet de type Button } Lien vers le commentaire Partager sur d’autres sites More sharing options...
oceane751 Posté(e) le 16 avril 2007 Auteur Partager Posté(e) le 16 avril 2007 ok emrci! Lien vers le commentaire Partager sur d’autres sites More sharing options...
oceane751 Posté(e) le 17 avril 2007 Auteur Partager Posté(e) le 17 avril 2007 bonjour je suis embeté car quand je veux modifier une quantité en fonction d'un element coché, ça me modifie cet element avec la quantité du dernier element affiché par exemple : bla 6 blo 7 bla 5 si je veux modifier bla en mettant 4, ça me mettra 5 est ce que tu pourrais me donner une piste? merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.