Interface graphique en java (calculatrice)

Messages postés
4
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
6 octobre 2009
- - Dernière réponse :  Adil Elyamouni - 10 déc. 2013 à 11:44
je viens de débuter dans l'interface graphique (java swing) et j'ai créer un programme d'une vrai calcul. qui fait la somme ,produit,...
mais je ne comprends pas pourquoi sa ne fonctionne pas donc voilà le programme et n'hésitez pas à corriger tout en expliquant par des commentaire merci
 


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
import java.text.ParsePosition;

//////////////////classe calculatricewindows////////////////////

public class calculatricewindows {

JButton b0 = new JButton ("0");
JButton b1 = new JButton ("1");
JButton b2 = new JButton ("2");
JButton b3 = new JButton ("3");
JButton b4 = new JButton ("4");
JButton b5 = new JButton ("5");
JButton b6 = new JButton ("6");
JButton b7 = new JButton ("7");
JButton b8 = new JButton ("8");
JButton b9 = new JButton ("9");
JButton bproduit = new JButton ("*");
JButton bvirgule = new JButton (",");
JButton bplus = new JButton ("+");
JButton bmoins = new JButton ("-");
JButton begale = new JButton ("=");
JButton bdivision = new JButton ("/");
JTextField resultat = new JTextField (15);

public calculatricewindows() {

JPanel panneau1 = new JPanel();
panneau1.setSize(10,10);
GridLayout disposition1 = new GridLayout (4,3);
panneau1.setLayout(disposition1);


panneau1.add(b1);
panneau1.add(b2);
panneau1.add(b3);
panneau1.add(bplus);
panneau1.add(b4);
panneau1.add(b5);
panneau1.add(b6);
panneau1.add(bmoins);
panneau1.add(b7);
panneau1.add(b8);
panneau1.add(b9);
panneau1.add(bproduit);
panneau1.add(b0);
panneau1.add(bvirgule);
panneau1.add(begale);
panneau1.add(bdivision);



moteurcalcul moteur1 = new moteurcalcul(this);//on a utilisé this pour dire qu'on est entrin d'utilise la calculatrice
//de cette classe elle méme pas une autre calculatrice
b1.addActionListener(moteur1);
b2.addActionListener(moteur1);
b3.addActionListener(moteur1);
b4.addActionListener(moteur1);
b5.addActionListener(moteur1);
b6.addActionListener(moteur1);
b7.addActionListener(moteur1);
b8.addActionListener(moteur1);
b9.addActionListener(moteur1);
b0.addActionListener(moteur1);
bvirgule.addActionListener(moteur1);
bplus.addActionListener(moteur1);
bmoins.addActionListener(moteur1);
bdivision.addActionListener(moteur1);
bproduit.addActionListener(moteur1);
begale.addActionListener(moteur1);


JFrame cadre = new JFrame ("calculatrice windows");
BorderLayout disposition6 = new BorderLayout ();
cadre.setLayout(disposition6);


cadre.add("North",resultat);
cadre.add("Center",panneau1);
resultat.addActionListener(moteur1);



cadre.setVisible(true);
cadre.setSize(300,200);
//cadre.pack();// pour ajuster
}





/////////////////classe main////////////////////////
public static void main (String args []){
calculatricewindows macalculatrice = new calculatricewindows ();
}
}






/////////////////classe moteurcalcul///////////////////
class moteurcalcul implements ActionListener {


calculatricewindows parent;
char opération=' ' ;
double resultatcourant =0 ;
NumberFormat formatNombres = NumberFormat.getInstance();//un objet qui représente et lit les nombres

public moteurcalcul (calculatricewindows parent)
{this.parent=parent;
}


public void actionPerformed (ActionEvent evenement){

JButton bouttonclique = (JButton) evenement.getSource();//savoir sur quel boutton l'utilisateur à appuyé
String champtext = parent.resultat.getText();//attribué a champtext se qui est ecrit dans le résultat (ecran d'affichage de la calculatrice)

double valeuraffiche=0;

if(!"".equals(champtext))
{ resultatcourant = formatNombres.parse(champtext,new ParsePosition(0)).doubleValue();
}

Object sourceevenement = evenement.getSource();

if(sourceevenement == parent.bplus)
{opération ='+';
resultatcourant = valeuraffiche;
parent.resultat.setText("");
}
else if (sourceevenement == parent.bmoins)
{opération = '-';
resultatcourant = valeuraffiche;
parent.resultat.setText("");
}
else if (sourceevenement == parent.bdivision)
{opération = '/';
resultatcourant = valeuraffiche;
parent.resultat.setText(" ");
}
else if (sourceevenement == parent.bproduit)
{opération ='*';
resultatcourant =valeuraffiche;
parent.resultat.setText("");
}
else if (sourceevenement == parent.begale)
{ if (opération == '+')
{
resultatcourant += valeuraffiche;
parent.resultat.setText(formatNombres.format(resultatcourant));
}
else if (opération =='-')
{ resultatcourant -= valeuraffiche;
parent.resultat.setText(formatNombres.format(resultatcourant));
}
else if (opération == '*')
{resultatcourant += valeuraffiche;
parent.resultat.setText(formatNombres.format(resultatcourant));
}
else if (opération == '/')
{resultatcourant /= valeuraffiche;
parent.resultat.setText(formatNombres.format(resultatcourant));
}
}

else

{

String libellebouttonclique = bouttonclique.getText();//enregistré le libellé du boutton appuyé dans libellébouttonappuyé
parent.resultat.setText(champtext+libellebouttonclique);//ajouté le libellé a l'affichage sans ecrasement

}


}
}
Afficher la suite 

3 réponses

Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
0
Merci
Sans bonjour, point de salut.

Si tu nous dis pas quel est le problème, ça va être difficile de t'aider. Ce n'est pas à nous de déboguer ton programme.
Commenter la réponse de kirua12
Messages postés
4
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
6 octobre 2009
0
Merci
mon probléme c'est que lorsque j'execute lr prog et je fait la somme ou la multiplication ou .. et j'appuie sur égale rien ne se passe donc apparemment il y a quelque chose qui ne fonctionne pas au niveau du bloc "begale"
Commenter la réponse de wajdi86
0
Merci
Check my Calculator (AdiloCatrice)...

https://code.google.com/p/adilocatrice/

Enjoy
Commenter la réponse de Adil Elyamouni