Code de gestion des opérations d'une calculatrice en java
Fermé
stephanesamin
Messages postés
3
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
21 novembre 2013
-
Modifié par pijaku le 22/11/2013 à 13:11
stephanesamin Messages postés 3 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 21 novembre 2013 - 21 nov. 2013 à 17:44
stephanesamin Messages postés 3 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 21 novembre 2013 - 21 nov. 2013 à 17:44
A voir également:
- Calculatrice java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Installer calculatrice sur mon portable - Télécharger - Calcul & Conversion
- Calculatrice gratuit - Télécharger - Calcul & Conversion
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 nov. 2013 à 19:28
18 nov. 2013 à 19:28
Il faudrait au minimum que tu ajoutes des ActionListener à chacun de tes boutons pour savoir quand tu appuies dessus. Exemple :
Après la manière de compléter la méthode dépend de comment tu veux faire tes calculs, si tu veux tout faire toi même, ou te servir d'outils déjà existant dans Java.
bouton0.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //TODO } });
Après la manière de compléter la méthode dépend de comment tu veux faire tes calculs, si tu veux tout faire toi même, ou te servir d'outils déjà existant dans Java.
stephanesamin
Messages postés
3
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
21 novembre 2013
Modifié par pijaku le 22/11/2013 à 13:12
Modifié par pijaku le 22/11/2013 à 13:12
ok merci mais n'empêche que j'ai éssayé d'utiliser les listener mais je m'en rend compte que lorsque j'exécute mon programme l'interface graphique de a calculatrice ainsi que l'éditeur se plante donc regarder ce code et dites moi ce qui ne va pas ds le code suivant :
1ère partie: code calculatrice
2ème partie : classe fille
1ère partie: code calculatrice
//importation des classes utilisées pr créer une interface graphiqque import javax.swing.*; //importation du gestionnaire de disposition import java.awt.*; import java.awt.event.*; // déclaration de la classe public class Calculatrice3 { // Déclaration de tous les composants de la calculatrice. JPanel fenêtr; JTextField affich; JButton bouton0; JButton bouton1; JButton bouton2; JButton bouton3; JButton bouton4; JButton bouton5; JButton bouton6; JButton bouton7; JButton bouton8; JButton bouton9; JButton boutonVirgule; JButton boutonEgale; JPanel panChif; JPanel panOpé; JButton boutonPlus; JButton boutonMoins; JButton boutonFois; JButton boutondiv; JButton boutonc; JButton boutonoff; JButton boutonon; public Calculatrice3 (){ fenêtr = new JPanel(); BorderLayout disposi = new BorderLayout(); fenêtr.setBackground(Color.CYAN); fenêtr.setLayout(disposi); affich = new JTextField(30); affich.enable(false); fenêtr.add(affich,BorderLayout.NORTH); bouton0 = new JButton("0"); bouton1 = new JButton("1"); bouton2 = new JButton("2"); bouton3 = new JButton("3"); bouton4 = new JButton("4"); bouton5 = new JButton("5"); bouton6 = new JButton("6"); bouton7 = new JButton("7"); bouton8 = new JButton("8"); bouton9 = new JButton("9"); boutondiv = new JButton ("\u00f7"); boutonVirgule = new JButton(","); boutonEgale = new JButton("="); boutonPlus = new JButton("+"); boutonMoins = new JButton("-"); boutonFois = new JButton("*"); boutonc = new JButton ("c"); boutonoff = new JButton ("OF"); boutonon = new JButton ("ON"); panChif = new JPanel(); GridLayout dispo2 = new GridLayout(3, 4); panChif.setLayout(dispo2); panChif.add(bouton1); panChif.add(bouton2); panChif.add(bouton3); panChif.add(bouton4); panChif.add(bouton5); panChif.add(bouton6); panChif.add(bouton7); panChif.add(bouton8); panChif.add(bouton9); panChif.add(bouton0); panChif.add(boutonEgale); panChif.add(boutonc); panChif.add(boutonoff); panChif.add(boutonon); panChif.add(boutonVirgule); fenêtr.add(panChif ,BorderLayout.CENTER); panOpé = new JPanel(); GridLayout dispo3 = new GridLayout(1,1); panOpé.setLayout(dispo3); panOpé.add(boutonPlus); panOpé.add(boutonMoins); panOpé.add(boutonFois); panOpé.add(boutondiv); fenêtr.add(panOpé , BorderLayout.EAST); // déclaration de la fenêtre JFrame frame = new JFrame(" ma première calculatrice en java "); frame.setContentPane(fenêtr); frame.setSize(400,300); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Création d'une instance du récepteur d'événements MoteurCalcul et transmettons au moteur une référence à elle-même. MoteurCalcul motcalc = new MoteurCalcul (this); bouton0.addActionListener(motcalc); bouton1.addActionListener(motcalc); bouton2.addActionListener(motcalc); bouton3.addActionListener(motcalc); bouton4.addActionListener(motcalc); bouton5.addActionListener(motcalc); bouton6.addActionListener(motcalc); bouton7.addActionListener(motcalc); bouton8.addActionListener(motcalc); bouton9.addActionListener(motcalc); boutonEgale.addActionListener(motcalc); boutonc.addActionListener(motcalc); boutondiv.addActionListener(motcalc); boutonFois.addActionListener(motcalc); boutonPlus.addActionListener(motcalc); boutonMoins.addActionListener(motcalc); boutonVirgule.addActionListener(motcalc); } public static void main (String [] args){ Calculatrice3 cal = new Calculatrice3 (); } }
2ème partie : classe fille
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JOptionPane; import javax.swing.JButton; import java.text.NumberFormat; //importation des classes permettant de connaître la position actuelle de l'analyse en cours import java.text.ParsePosition; public class MoteurCalcul extends Calculatrice3 implements ActionListener{ Calculatrice3 par; // une référence à la fenêtre Calculatrice3 char actionSélectionnée = ' '; // +, -, /, ou * double résultat = 0; // un objet capable de lire et présenter les nombres NumberFormat formatNombres = NumberFormat.getInstance(); // Le constructeur stocke la référence à la fenêtre Calculatrice3 dans la variable membre par MoteurCalcul(final Calculatrice3 par) { this.par = par; } public void actionPerformed(ActionEvent événement) { // Retrouve la source de l'action JButton boutonCliqué = (JButton) événement.getSource(); String affich = par.affich.getText(); double valeurAffichée = 0; // Retrouve le nombre présenté dans le champ texte s'il n'est pas vide if (!"".equals(affich)) { valeurAffichée = // analyse la chaîne de caractères formatNombres.parse(affich, new ParsePosition(0) /* ne sert pas */). // puis donne sa valeur en tant que double doubleValue(); } Object sourceEvénement = événement.getSource(); /* Pour chaque bouton d'action, mémorise l'action sélectionnée, +, -, /, ou *, stocke la valeur courante dans la variable résultatCourant et vide le champ /Affichage avant l'entrée du nombre suivant */ if (sourceEvénement == par.boutonPlus) { actionSélectionnée = '+'; résultat = valeurAffichée; par.affich.setText(""); } else if (sourceEvénement == par.boutonMoins) { actionSélectionnée = '-'; résultat = valeurAffichée; par.affich.setText(""); } else if (sourceEvénement == par.boutondiv) { actionSélectionnée = '\u00f7'; résultat = valeurAffichée; par.affich.setText(""); } else if (sourceEvénement == par.boutonFois) { actionSélectionnée = '*'; résultat = valeurAffichée; par.affich.setText(""); } else if (sourceEvénement == par.boutonEgale) { // Effectue les calculs en fonction de actionSélectionnée // Modifie la valeur de la variable résultatCourant // et affiche le résultat if (actionSélectionnée == '+') { résultat += valeurAffichée; // Convertit le résultat en le transformant en String // à l'aide de formatNombres par.affich.setText( formatNombres.format(résultat)); } else if (actionSélectionnée == '-') { résultat -= valeurAffichée; par.affich.setText(formatNombres.format(résultat)); } else if (actionSélectionnée == '\u00f7') { résultat /= valeurAffichée; par.affich.setText(formatNombres.format(résultat)); } else if (actionSélectionnée == '*') { résultat *= valeurAffichée; par.affich.setText(formatNombres.format(résultat)); } } else { // Pour tous les boutons on ajoute le libellé du bouton au champ texte String libelléBoutonCliqué = boutonCliqué.getText(); par.affich.setText(affich + libelléBoutonCliqué); } } }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
20 nov. 2013 à 19:18
20 nov. 2013 à 19:18
Ton affichage bug parce que le constructeur de Calculatrice3 est appelé par les objets MoteurCalcul, donc tu créés une infinité de fenêtre en même temps, ce qui plante l'affichage.
En fait j'imaginais quelque chose de plus simple pour ton problème, au lieu d'avoir un gros Listener qui fait tout une succession de if/else, il suffirait de faire des petits Listener pour chacune des touches, en passant par exemple par un StringBuilder qui accumulerait les caractères entrés, jusqu'au moment du calcul.
En fait il y aurait même encore plus simple, en faisant un tableau de JButton pour la plupart de tes touches. Par exemple avec un bouton[0], bouton[1]... à la place de bouton0, bouton1... comme ça un certain nombres d'opérations se simplifieraient avec une boucle for.
En fait j'imaginais quelque chose de plus simple pour ton problème, au lieu d'avoir un gros Listener qui fait tout une succession de if/else, il suffirait de faire des petits Listener pour chacune des touches, en passant par exemple par un StringBuilder qui accumulerait les caractères entrés, jusqu'au moment du calcul.
final StringBuilder sb = new StringBuilder();
bouton0.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
sb.append("0");
}
});
bouton1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
sb.append("1");
}
});
// ...
boutonEgale.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
sb.replace(0, sb.length(), calculer(sb.toString()));
}
});
En fait il y aurait même encore plus simple, en faisant un tableau de JButton pour la plupart de tes touches. Par exemple avec un bouton[0], bouton[1]... à la place de bouton0, bouton1... comme ça un certain nombres d'opérations se simplifieraient avec une boucle for.
stephanesamin
Messages postés
3
Date d'inscription
lundi 18 novembre 2013
Statut
Membre
Dernière intervention
21 novembre 2013
21 nov. 2013 à 17:44
21 nov. 2013 à 17:44
ok c fai mais di moi kske je dois faire pr ne plus que mon application ne se plante plus car je ne trouve vraimen pas la solution donc stp montre moi le chemin et indique moi clairement ce que je dois faire. merçi d'avance