Interface graphique en java (calculatrice)

wajdi86 Messages postés 4 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 6 octobre 2009 - 23 juil. 2009 à 15:57
 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

}


}
}
A voir également:

3 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
24 juil. 2009 à 14:19
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.
2
Rejoignez-nous