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

avec Java Discussion :

Addition des Compteurs + et -


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut Addition des Compteurs + et -
    Je ne comprends pas j'ai essayé dans une fenètre de créer deux boutons + et -. ça fonctionne. Ensuite j'ai créé deux compteur pour cumuler le nombre de clics sur chaque boutons. et ensuite je voulais afficher dans un label l'addition du nombre de clics + (+1) et le nombre de clics moins (-1).

    voici mon code. Je n'arrive pas à stocker l'addition des deux compteurs dans un compteur global.

    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
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
     
    class FenLabel extends JFrame 
     
    {
    	public FenLabel()
    	{
    		setTitle ("Essai d'étiquette") ;
    		setSize (300,120) ;
    		setLocation(350, 300);
    		Container contenu1 = getContentPane() ;
    		contenu1.setLayout(new FlowLayout()) ;
     
    		//************** Bouton + ******************************
    		bouton = new JButton ("+") ;
    		ecoutePlus Ecout1 = new ecoutePlus();
    		contenu1.add(bouton) ;
    		//************** Bouton - ********************************
    		//Container contenu2 = getContentPane() ;
    		//contenu2.setLayout(new FlowLayout(FlowLayout.RIGHT)) ;
    		boutonMoins = new JButton ("-") ;
    		ecouteMoins Ecout2 = new ecouteMoins();
    		contenu1.add(boutonMoins) ;
     
    		nbClics = 0 ;
     
    		bouton.addActionListener(Ecout1) ;
    		boutonMoins.addActionListener(Ecout2) ;
    		nbClics = Ecout1.nbClicsPlus + Ecout2.nbClicsMoins ;
     
    		compte = new JLabel ("Nombre de clics sur COMPTEUR = " + nbClics) ;
    		contenu1.add(compte);
     
    	}
     
    	private JButton bouton , boutonMoins ;
    	private JLabel compte ;
        public int nbClics;
     
    }
     
    class ecoutePlus implements ActionListener
    {
    	public void actionPerformed (ActionEvent e)
    	{
     
    		nbClicsPlus++;
    		System.out.println("J'ai appuyé sur le bouton plus" + nbClicsPlus + " fois");
    	}
    	public int getNbPlus()
    	{
    		return nbClicsPlus ;
     
    	}
    	public int nbClicsPlus;
     
    }
     
    class ecouteMoins implements ActionListener
    {
    	public void actionPerformed (ActionEvent e)
    	{
    		nbClicsMoins--;
    		System.out.println("J'ai appuyé sur le bouton moins " + nbClicsMoins +" fois");
     
    	}
    	public  int getNbMoins()
    	{
    		return nbClicsMoins ;
     
    	}
     
    	public int nbClicsMoins;
    }
     
     
    public class Label1 
    {
     public static void main (String [] args)
     {
    	 FenLabel fen = new FenLabel() ;
    	 fen.setVisible (true);
     
     }
    }
    merci pour votre aide. Et de me dire quelle chapitre notion, je ne maîtrise pas totalement.

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbClics = Ecout1.nbClicsPlus + Ecout2.nbClicsMoins ;
    Le nombre de clics doit etre calculé à chaque appuie sur un bouton. Dans ton code actuel, tu calcules le nombre de clics dans le constructeur au moment où les deux clics sont à 0.
    A chaque appuie sur un bouton, le texte du JLabel doit etre mis à jour pour avoir le résultat voulu.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut re
    Vraiment désolé, mais bien que je comprends ce que tu dis,

    je pensais que si je mettais

    nbClics = nbClicsMoins + nbClicsPlus ; après

    bouton.addActionListener(Ecout1) ;
    boutonMoins.addActionListener(Ecout2) ;

    Les valeurs nétaient pas à 0.

    En fait que dois faire exactement, je construits un JLabel pour chaque class ecouteMoins et ecoutePlus ou je modifie mon constructeur ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut Autre test
    J'ai essayé avec cette nouvelle ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbClics = nbClics + Ecout1.getNbPlus() + Ecout2.getNbMoins() ;
    Mais ce n'est toujours pas ok.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on te la dit ce que tu dois faire. Quand tu change la valeur d'un click, tu dois aller dans le label aussi changer la valeur. On est pas en javafx avec les bindings, les changements dans une variable ne se propagent pas automatiquement!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut
    J'avais compris je pense.

    Mais je ne sais pas comment modifier mon Jlabel compte de ma classe FenLabel
    dans mes classes ecoutePlus et ecouteMoins.
    Je vais chercher mais surtout, plus que la réponse en elle même. J'aimerais savoir quel thème, chapitre ou notion. Je ne maîtrise pas et pour laquelle, il faudrait que je reprenne. désolé de si bon matin.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut Modification du label
    [code]class ecoutePlus implements ActionListener
    {
    public ecoutePlus (Container contenu1, JLabel compte)
    {
    this.contenu1 = contenu1 ;
    this.compte = compte ;
    }
    public void actionPerformed (ActionEvent e)
    {

    nbClicsPlus++;
    compte = new JLabel ("Nombre de clics sur COMPTEUR = " + nbClicsPlus) ;
    System.out.println("J'ai appuyé sur le bouton plus" + nbClicsPlus + " fois");
    contenu1.add(compte);

    }CODE]

    voilà je modifie mon label. dans ma classe FenLabel voici les changements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	ecoutePlus Ecout1 = new ecoutePlus(contenu1,compte);
    je ne sais pas si je suis sur la bonne voie. Pour l'instant ça ne marche pas. J'arrive pas à passer le label dans ma fenêtre FenLabel.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut
    désolé j'ai ajouté

    évidemment les labels s'ajoute les uns les autres.
    j'aimerais qu'il n'y ait qu'un seul Label qui se met à jour.

    En gros il faudrait non pas que je puisse mettre à jour le Label mais le compteur NbClics non ?

  9. #9
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Tu n'a pas besion d'ajouter un nouveau composant label. Il te suffit de modifier le texte du label.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class ecoutePlus implements ActionListener
    {
    public ecoutePlus (JLabel compte)
    {
      this.compte = compte ;
    }
    public void actionPerformed (ActionEvent e)
    {
     
     nbClicsPlus++;
     compte.setText ("Nombre de clics sur COMPTEUR = " + nbClicsPlus) ;
    }
    Pour pouvoir avoir les données des deux boutons, tu peux creer une méthode public dans la classe FenLabel qui fait les calculs et affiche le resultat dans le label. Puis tu passe simplement la reference de la classe FenLabel à tes écouteurs.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut
    merci pour ses précisions

    Du coup j'ai simplifié en ne gardant qu'un seul écouteur + une boucle voici mon code maintenant. :

    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
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    class FenLabel extends JFrame 
     
    {
    	public FenLabel()
    	{
    		setTitle ("Essai d'étiquette") ;
    		setSize (300,120) ;
    		setLocation(350, 300);
     
    		//************** Bouton + ******************************
    		bouton = new JButton ("+") ;
    		boutonMoins = new JButton ("-") ;
    		nbClics = 0 ;
    		Container contenu1 = getContentPane() ;
    		contenu1.setLayout(new FlowLayout()) ;	
    		EcouteBouton ecout1 = new EcouteBouton(10,compte);
    		EcouteBouton ecout2 = new EcouteBouton(20,compte);
    		contenu1.add(bouton) ;
    		contenu1.add(boutonMoins) ;
    		bouton.addActionListener(ecout1);
    		boutonMoins.addActionListener(ecout2);
    		compte = new JLabel ("Nombre de clics  sur COMPTEUR : "+nbClics);
    		contenu1.add(compte);
    		}	
    	private JButton bouton , boutonMoins ;
    	private int nbClics ;
    	private JLabel compte ;
    }
     
    class EcouteBouton implements ActionListener
    {
    	public EcouteBouton (int n, JLabel compte)
    	{
    		this.n = n ;
    		this.compte = compte ;
    	}
    	public void actionPerformed(ActionEvent e)
    	{
    		System.out.println("Action sur Bouton "+n) ;
    		if (n == 10) 
    		{nbClics++ ;}
    		else
    		{nbClics-- ;}
    		System.out.println("Action sur Bouton "+nbClics) ;
    		compte.setText("Nombre de clics  sur COMPTEUR : "+nbClics);
     
    	}
    	private int nbClics;
    	private JLabel compte ;
    	private int n ;
    }
     
    public class Label1 
    {
     public static void main (String [] args)
     {
    	 FenLabel fen = new FenLabel() ;
    	 fen.setVisible (true);
     }
    }
    Malheureusement ECLIPSE me ressort des erreurs
    Action sur Bouton 10
    Action sur Bouton 1
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at MesGraph.EcouteBouton.actionPerformed(Label1.java:50)
    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 recherche toujours , si qqn peut m'orienter ce serait sympa, je sens que j'arrive au bout quand même.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    compte est null, ce qui est du à ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		EcouteBouton ecout1 = new EcouteBouton(10,compte);
    		EcouteBouton ecout2 = new EcouteBouton(20,compte);
    		contenu1.add(bouton) ;
    		contenu1.add(boutonMoins) ;
    		bouton.addActionListener(ecout1);
    		boutonMoins.addActionListener(ecout2);
    		compte = new JLabel ("Nombre de clics  sur COMPTEUR : "+nbClics);
    tu passe compte aux écouteur avant de lui avoir attribué un valeur. Il faut le faire après!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		compte = new JLabel ("Nombre de clics  sur COMPTEUR : "+nbClics);
    		EcouteBouton ecout1 = new EcouteBouton(10,compte);
    		EcouteBouton ecout2 = new EcouteBouton(20,compte);
    		contenu1.add(bouton) ;
    		contenu1.add(boutonMoins) ;
    		bouton.addActionListener(ecout1);
    		boutonMoins.addActionListener(ecout2);

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Points : 38
    Points
    38
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. faire l'addition des heures
    Par zidenne dans le forum Delphi
    Réponses: 1
    Dernier message: 25/08/2006, 13h18
  2. Réponses: 2
    Dernier message: 24/03/2006, 10h18
  3. [VBA-E] Addition des valeurs des textbox
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 15/02/2006, 14h49
  4. [68k] Addition des 50 premières valeurs d'un tableau
    Par mortalius dans le forum Autres architectures
    Réponses: 2
    Dernier message: 01/12/2005, 14h43
  5. Réponses: 2
    Dernier message: 14/12/2004, 18h42

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