Aller au contenu

[JAVA] JRadioButton


oceane751

Messages recommandés

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

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

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 ! :francais:

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...