Problème élementaire d'ActionEvent !!!

camillou2442 Messages postés 3 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 15 mars 2008 - 13 mars 2008 à 19:55
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 - 3 avril 2008 à 13:05
Bonjour, on vient juste de commencer à apprendre la programmation Java. On doit créer un sondage avec des boutons. On a eu l'impression de faire ce qu'il fallait au niveau de l'Action Event (avec getSource()) mais apparemment il y a un truc qui bloque! Ca doit être une erreur vraiment élémentaire, mais bon on débute. Voici nos trois classes (le problème est dans Sondage...)

class Main
{
  public static void main(String[] args)
  {
    Sondage s=new Sondage();
    s.pack(); s.setVisible(true);
  }
}

________________________________________________________

import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
TD2
 */

class Sondage extends JFrame implements ActionListener
{
  private JLabel l1,l2,l3,l4;
  private JButton b1,b2,b3;
  private Compteur c;
  public Sondage()
  {
   JPanel jp = new JPanel();
   jp = (JPanel) this.getContentPane();
   setTitle("Nains de jardins");
   JLabel l1 = new JLabel ("Crains-tu les nains de jardins?");
   JLabel l2 = new JLabel ("Votes positifs : ");
   JLabel l3 = new JLabel ("Votes négatifs : ");
   JLabel l4 = new JLabel ("Votes blancs : ");
   JButton b1 = new JButton ("Oui");
   b1.addActionListener(this);
   JButton b2 = new JButton ("Non");
   b2.addActionListener(this);
   JButton b3 = new JButton ("Sans Avis");
   b3.addActionListener(this);

   jp.add("North",l1);
   jp.add("West",b1);
   jp.add("Center",b2);
   jp.add("East",b3);
   JPanel jp1 = new JPanel();
   jp1.setLayout(new BorderLayout());
   jp.add("South",jp1);
   jp1.add("North",l2);
   jp1.add("Center",l4);
   jp1.add("South",l3);
  

  }
 
  public void actionPerformed(ActionEvent e)
  {
    Object  source=e.getSource();
    if  (source==b1)
    {
      c.incremente_oui();
      double a=(c.get_nbr_oui())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis());
      l2.setText("Votes positifs : "+a);
      this.pack();this.setVisible(true);
    }
   
    else if(source==b2)
    {
      c.incremente_non();
      double b=(c.get_nbr_non())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis());
      l4.setText("Votes negatifs : "+b);
      this.pack();this.setVisible(true);
    }
   
    else if(source==b3)
    {
      c.incremente_ss_avis();
      double d=(c.get_nbr_ss_avis())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis());
      l3.setText("Votes positifs : "+d);
      this.pack();this.setVisible(true);

    }

}

}

_____________________________________________________________

class Compteur
{
  private int nbr_oui;
  private int nbr_non;
  private int nbr_ss_avis;

  Compteur()
  {
    nbr_oui=0;
    nbr_non=0;
    nbr_ss_avis=0;
  }

  public void incremente_oui()
  {
    nbr_oui++;
  }

  public void incremente_non()
 {
   nbr_non++;
 }

 public void incremente_ss_avis()
 {
   nbr_ss_avis++;
 }

 public int get_nbr_oui()
 {
   return nbr_oui;
 }

 public int get_nbr_non()
 {
   return nbr_non;
 }

 public int get_nbr_ss_avis()
  {
    return nbr_ss_avis;
  }
}

Merci d'avance pour votre aide!!!

*~ Viva Java ~*

5 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
13 mars 2008 à 20:13
Salut:

Mon ami tu peux ne faire gagner tu temps si tu vas droite au but et tu nous fournis une trace de programme par exemple ou bien, de nous dire qu'est ce que ça marche pas.

Note: Ne jamais utiliser des variables avec des noms non signiticatifs.
0
camillou2442 Messages postés 3 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 15 mars 2008
14 mars 2008 à 10:05
Alors ce qui ne marche pas apparement c'est que, lorsqu'on clique sur un bouton, la méthode ActionPerformed est bien activé mais le programme ne semble pas rentrer dans aucun des if (on a trois boutons).

Merci de nous aider s'il vous plait!!
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
14 mars 2008 à 14:33
JButton b1 = new JButton ("Oui");

b1 est declare dans les variable de classe ...
essai :
b1 = new JButton ("Oui");

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
camillou2442 Messages postés 3 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 15 mars 2008
15 mars 2008 à 17:31
Merci sheorogath pour le conseil. Malheureusement ça ne marche toujours pas; maintenant quand je clique sur un bouton j'obtiens :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Sondage.actionPerformed(Sondage.java:54)
    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.DefaultButtonModel.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.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(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 sais pas du tout ce que ça veut dire!!
Quelqu'un peut m'aider??

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
3 avril 2008 à 13:05
Salut,

Plusieurs problèmes était présents,

import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
TD2
 */

class Sondage extends JFrame implements ActionListener
{
  private JLabel l1,l2,l3,l4;
  private JButton b1,b2,b3;
  private Compteur c;
  public Sondage()
  {
   JPanel jp = new JPanel();
   jp = (JPanel) this.getContentPane();
   setTitle("Nains de jardins");   l1 new JLabel ("Crains-tu les nains de jardins?");> Les JLabel sont des attributs de la class donc faut l'écrire comme ça
   l2 = new JLabel ("Votes positifs : ");
   l3 = new JLabel ("Votes négatifs : ");
   l4 = new JLabel ("Votes blancs : ");   b1 new JButton ("Oui"); > Pareil pour les boutons
   b1.addActionListener(this);
   b2 = new JButton ("Non");
   b2.addActionListener(this);
   b3 = new JButton ("Sans Avis");
   b3.addActionListener(this);
   c new Compteur();> La grosse erreur c'est de n'avoir jamais créé le Compteur
  
   jp.add("North",l1);
   jp.add("West",b1);
   jp.add("Center",b2);
   jp.add("East",b3);
   JPanel jp1 = new JPanel();
   jp1.setLayout(new BorderLayout());
   jp.add("South",jp1);
   jp1.add("North",l2);
   jp1.add("Center",l4);
   jp1.add("South",l3);
 

  }
 
  public void actionPerformed(ActionEvent e)
  {
    Object  source=e.getSource();
    if  (source==b1)
    {
      c.incremente_oui();
      double a=(double)(c.get_nbr_oui())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis()); => J'ai ajouté les cast (double) car le résultat ressemblait à rien
      l2.setText("Votes positifs : "+a);
      this.pack();this.setVisible(true);
    }
  
    else if(source ==b2)
    {
      c.incremente_non();
      double b=(double)(c.get_nbr_non())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis());=> J'ai ajouté les cast (double) car le résultat ressemblait à rien
      l3.setText("Votes negatifs : "+b);
      this.pack();this.setVisible(true);
    }
  
    else if(source==b3)
    {
      c.incremente_ss_avis();
      double d=(double)(c.get_nbr_ss_avis())/(c.get_nbr_oui()+c.get_nbr_non()+c.get_nbr_ss_avis());=> J'ai ajouté les cast (double) car le résultat ressemblait à rien
      l4.setText("Votes Blancs : "+d);
      this.pack();this.setVisible(true);

    }

}

}

oilà j'espère vous avoir aidés.

A++

extraman1
0
Rejoignez-nous