Bugs sur la calculatrice

meme -  
 Utilisateur anonyme -
Bonjour, je vien de réaliser une calculatrice en java mais je ne sais pour quelles raisons eclipse m'envoie des bugs!!
voici le code source:
import java.awt.*;//Color ,BorderLayout,GridLayout,Dimension,Font,Image,File,Graphics
import javax.swing.*;//JFrame,JPanel,JButton,JPanel

import java.io.*;//File,IOExeption,
import javax.imageio.ImageIO;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Fenetre extends JFrame{
String[] tab_string = {"1", "2", "3", "4", "5", "6", "7",
"8", "9", "0", ".", "=", "C", "+", "-", "*", "/"};
JButton[] tab_button = new JButton[tab_string.length];//tableau qui crée un objet bouton à chaque composant du tableau

private JPanel pan =new JPanel();
private JButton bouton = new JButton(BorderLayout.NORTH);//remplir le panneau àpartir du Nord
private JPanel chiffre = new JPanel();

private JLabel ecran = new JLabel();
private double chiffre1;
private boolean update = false;
private String operateur = "";

//constructeur

public Fenetre (){

this.setTitle("Ma Calculatrice");
this.setSize(282,230);
this.setLocationRelativeTo(null);
this.setResizable(false);//empêche le redimentionnement de la fenetre
pan.setBackground(Color.white);
this.setContentPane(pan);//pour dire à JPanel que c'est "pan" qui sera notre ConentPane c-à-d qu'il contiendra tous les composants
leDesign ();
this.setVisible(true);
}
private void leDesign (){

//---------L'ECRAN---------
ecran.setFont ( new Font("Arial", Font.BOLD, 20));
ecran= new JLabel ("0");
ecran.setHorizontalAlignment(JLabel.RIGHT);

ecran.setPreferredSize (new Dimension (225,30));
JPanel panecran = new JPanel ();

panecran.setPreferredSize(new Dimension (150,100));

//--------LES BOUTONS----------
JButton bouton7 =new JButton ("7");
JButton bouton8 =new JButton ("8");
JButton bouton9 =new JButton ("9");
JButton bouton4 =new JButton ("4");
JButton bouton5 =new JButton ("5");
JButton bouton6 =new JButton ("6");
JButton bouton1 =new JButton ("1");
JButton bouton2 =new JButton ("2");
JButton bouton3 =new JButton ("3");
JButton bouton0 =new JButton ("0");
JButton plusOUmoins =new JButton ("+/-");
JButton egal =new JButton ("=");
JButton plus =new JButton ("+");
JButton moins =new JButton ("-");
JButton fois =new JButton ("*");
JButton division =new JButton ("/");
JButton cancel =new JButton ("C");
JButton virgule =new JButton (".");

chiffre.setPreferredSize(new Dimension (150,150));
chiffre.setLayout(new GridLayout(4, 3, 2 , 2));//setLayout:définnit le type de Layout à utilisé

//On ajoute le bouton au 1er panneau pr les chiffres
chiffre.add(bouton7);
chiffre.add(bouton8);
chiffre.add(bouton9);
chiffre.add(bouton4);
chiffre.add(bouton5);
chiffre.add(bouton6);
chiffre.add(bouton1);
chiffre.add(bouton2);
chiffre.add(bouton3);
chiffre.add(bouton0);
chiffre.add(plusOUmoins);
chiffre.add(egal);

//On ajoute le bouton au 2eme panneau pr les operateurs
JPanel operateur = new JPanel();
operateur.setPreferredSize(new Dimension (100,150));
operateur.setLayout(new GridLayout(4, 2, 2 , 2));

operateur.add(plus);
operateur.add(cancel);
operateur.add(moins);
operateur.add(division);
operateur.add(fois);
operateur.add(virgule);

panecran.add(ecran);
panecran.setBorder(BorderFactory.createLineBorder(Color.black));
pan.add(ecran, "BorderLayout.NORTH");
pan.add(chiffre, "BorderLayout.WEST");
pan.add(operateur,"BorderLayout.EAST");

//------interraction entre bouton et ecran-------

for (int i = 0; i < tab_string.length ; i ++){

switch(i){

case 11:
tab_button[i].addActionListener(new egalListener());
break;
case 12:
tab_button[i].addActionListener(new resetListener ());
break;
case 13:
tab_button[i].addActionListener (new plusListener ());
break;
case 14:
tab_button[i].addActionListener (new moinsListener ());
break;
case 15:
tab_button[i].addActionListener (new foisListener ());
break;
case 16:
tab_button[i].addActionListener (new divListener ());
break;
default:
tab_button[i].addActionListener (new chiffreListener ());
}
}

}
private void calcul(){
if(operateur.equals("+"))
{
chiffre1 = chiffre1 +
Double.valueOf(ecran.getText()).doubleValue();
ecran.setText(String.valueOf(chiffre1));
}

if(operateur.equals("-"))
{
chiffre1 = chiffre1 -
Double.valueOf(ecran.getText()).doubleValue();
ecran.setText(String.valueOf(chiffre1));
}

if(operateur.equals("*"))
{
chiffre1 = chiffre1 *
Double.valueOf(ecran.getText()).doubleValue();
ecran.setText(String.valueOf(chiffre1));
}

if(operateur.equals("/"))
{
try{
chiffre1 = chiffre1 /
Double.valueOf(ecran.getText()).doubleValue();

ecran.setText(String.valueOf(chiffre1));
}catch(ArithmeticException e){
ecran.setText("0");
}
}
}

class chiffreListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
/* * e:le nom de l'évenement
* On affiche le chiffre en plus dans le label
*/

String str = ((JButton)e.getSource()).getText();
/* (JButton)e.getSource():methode permettant de reconnaître lequel des objets JButton
* a déclancher l'évenement e.
* getText(): récupère le texte correspondant au bouton clické
*/

if(!ecran.getText().equals("0"))
str = ecran.getText() + str;

ecran.setText(str);
}

}

class egalListener implements ActionListener{
public void actionPerformed (ActionEvent arg0){
calcul ();
}
}
class plusListener implements ActionListener {
public void actionPerformed (ActionEvent arg0) {
calcul ();
operateur = "+";
}
}
class moinsListener implements ActionListener {
public void actionPerformed (ActionEvent arg0) {
calcul ();
operateur = "-";
}
}

class foisListener implements ActionListener {
public void actionPerformed (ActionEvent arg0) {
calcul ();
operateur = "*";
}
}
class divListener implements ActionListener {
public void actionPerformed (ActionEvent arg0) {
calcul ();
operateur = "/";
}
}
class resetListener implements ActionListener {
public void actionPerformed (ActionEvent arg0) {
chiffre1 = 0;
operateur = "";
ecran.setText("");
}
}
}

A voir également:

1 réponse

Utilisateur anonyme
 
Salut,

Mais encore !!!...
0