IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[débutant] evenement bouton + checkbox


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut [débutant] evenement bouton + checkbox
    bonjour!!!

    je galere un peu avec 2 evenements que je veux dans mon code.
    le 1er est celui d'un bouton et l'autre celui d'un Checkbox

    en effet, j'ai 2 TextField (on en prendra pas compte ici) et des CheckBox puis un bouton qui va permettre d'afficher le tout dans une fenetre.

    mais ej ne sais pas comment faut faire pour récuperer la valeur du checkbox coché car ce qui me bloque est qu'il y a 2 evenement (bouton et le checkbox)

    voici les 2 evenments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void itemStateChanged (ItemEvent evt) 
    	{
    		 Object obj = evt.getSource();
     
    		 if (obj == box)
    		 {
    		String result =	 box.getLabel();
    			 System.out.println(result);
    		 }
    		 }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void actionPerformed(ActionEvent e) 
    	{
    		if ( (Button) e.getSource() == bouton ) 
     
    		{
     
     
    			JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+box.getLabel() );
     
    }
     
    	}

    j'ai fait ça :
    JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+box.getLabel() );

    mais j'ai comme erreur :

    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)


    j'ai l'impression de tourner en rond.. car j'ai enlever ""+box.getLabel()" et j'ai plus l'erreur. et je en sais pas comment inserer le label de ma chekcbox dans le JOptionPane
    alors si quelqu'un pourrait m'aider se serai vraiment tres gentil..

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    La portion de code que tu nous montres me semble correct, il nous en faudrait donc un peu plus.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut
    si le getLabel() semble poser problème, alors tu peux faire autrement, c'est moins propre, mais ça marchera.
    tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String label1,label2;
    if(macaseàcocher1.isSelected()) 
    	label1=macaseàcocher1.getLabel();// ou si ça marche toujours pas, label1=lelabelcorrespondantàlacase1;
    else label2=macaseàcocher2.getLabel();// ou si ça marche toujours pas, label2=lelabelcorrespondantàlacase2;
     
    JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+label1);//ou label2

  4. #4
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    ok
    je vous met tout le code qui me permet d'effectuer un ajout dans la base de données (nom, prix, type)

    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
     
     
    public class ajout extends JFrame implements ActionListener,ItemListener
    {
     
    	private Button bouton;
    	private TextField nom, prix;
    	private JPanel panel;
    	private Checkbox box;
    	private JLabel lab;
    	private JFrame frame;
     
     
     
    	public ajout()
    	{
    		super();
    		panel = new JPanel();
    		panel.setLayout(new FlowLayout(FlowLayout.LEFT,4,2));
     
     
    		nom = new TextField("nom", 10);
    		prix = new TextField("prix €", 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","yess");
    			//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");
    				Checkbox box = new Checkbox(resul);
    				panel.add(box);
    				box.addItemListener(this);
     
    			} 
     
    		}
    		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.getSource();
     
    		 if (obj == box)
    		 {
    		String result =	 box.getLabel();
    			System.out.println(result);
    		 }
    	}
     
     
    	public void actionPerformed(ActionEvent e) 
    	{
    		if ( (Button) e.getSource() == bouton ) 
     
    		{
     
     
    			JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :" );
     
    }
     
    	}
     
     
     
    	public static void main(String[] args) 
    	{
    		ajout aj = new ajout();
     
    	}
     
    }

  5. #5
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    Citation Envoyé par michaeljeru
    si le getLabel() semble poser problème, alors tu peux faire autrement, c'est moins propre, mais ça marchera.
    tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String label1,label2;
    if(macaseàcocher1.isSelected()) 
    	label1=macaseàcocher1.getLabel();// ou si ça marche toujours pas, label1=lelabelcorrespondantàlacase1;
    else label2=macaseàcocher2.getLabel();// ou si ça marche toujours pas, label2=lelabelcorrespondantàlacase2;
     
    JOptionPane.showMessageDialog(null,"nom : "+nom.getText()+" "+ "prix : "+prix.getText()+" "+"type :"+label1);//ou label2

    pour le isSelected(), ça ne passe pas...

  6. #6
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    si j'ai bien suivi :
    le 'box.getLabe'l tourne bien dans 'itemStateChanged' mais pas dans 'actionPerformed', c'est bien ça ?

  7. #7
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    oui cé ça

  8. #8
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    D'après ce que je vois, tu as une variable 'box' déclaré dans une boucle 'while'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while(resultat.next())
    {
     
    				String resul = resultat.getString("type");
    				Checkbox box = new Checkbox(resul);
    				panel.add(box);
    				box.addItemListener(this);
     
    			}
    Autrement dit, ta variable n'est-elle pas détruite à la sortie du block ??

  9. #9
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    arf ba oauis...

    c'est une vrai galère ché pa commen recuperer ce genre de valeur...

  10. #10
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Ben, t'as pas trop le choix, il faut que tu les stockes à la construction.
    Par exemple dans une map, que tu pourrais indexer par l'identifiant du type

  11. #11
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    oauis mais j'ai d'autre code où j'utilise sans soucis des valeurs d'une boucle, notament avec des boutons.

    la question de départ était comment utiliser 2 écouteurs (ActionListener et ItemListener) ensemble.

    car quand je clic sur mon bouton, il se passe un événement avec d'utiliser le label de la checkbox. et c'ets là que je bloque

  12. #12
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Pour ça par contre, c'est pas les solutions qui manquent :

    tu peux par exemple faire un gestionnaire d'évènements pour les checkboxes et un pour les boutons au lieu de faire jouer ce rôle à ta classe

Discussions similaires

  1. [VB.NET] [débutant] couleur bouton + click .
    Par Amenos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/03/2006, 11h55
  2. Réponses: 2
    Dernier message: 20/02/2006, 14h54
  3. [debutant] Evenement bouton
    Par Rekiem dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 22/01/2006, 12h09
  4. [wxPython] evènement bouton
    Par python_man dans le forum wxPython
    Réponses: 10
    Dernier message: 16/05/2005, 15h53
  5. Réponses: 4
    Dernier message: 20/04/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo