[java] bouton equal marche pas
Résolu
domxaline
-
scinarf Messages postés 1119 Date d'inscription Statut Membre Dernière intervention -
scinarf Messages postés 1119 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
quand je clique sur bouton equal,le résultat s'affiche pas
par contraire,affichage disparait tout de suite,quel erreur j'avais fait?
quelqu'un peut aider svp
quand je clique sur bouton equal,le résultat s'affiche pas
par contraire,affichage disparait tout de suite,quel erreur j'avais fait?
quelqu'un peut aider svp
package Calcul; public class Main { public static void main(String[] args) { Calculatrice calculette=new Calculatrice(); } } package Calcul; import java.awt.Color ; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionListener ; import java.awt.event.ActionEvent; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Calculatrice extends JFrame { private JPanel container=new JPanel(); String[]tab_string={"1","2","3","4","5","6","7","8","9","0",".","=","C","+","-","*","/"}; JButton[]tab_button=new JButton[tab_string.length]; private JLabel ecran=new JLabel(); private Dimension dim=new Dimension(50,40); private Dimension dim2=new Dimension(50,31); private double chiffre1 ; private boolean clicOperateur=false,update=false; private String operateur=""; public Calculatrice() { this.setSize(240,260) ; this.setTitle("Calculette") ; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; this.setLocationRelativeTo(null) ; this.setResizable(false) ; initComposant(); this.setContentPane(container) ; this.setVisible(true) ; } private void initComposant() { Font police=new Font("Arial",Font.BOLD,20); ecran=new JLabel("0"); ecran.setFont(police); ecran.setHorizontalAlignment(JLabel.RIGHT); ecran.setPreferredSize(new Dimension(220,20)); JPanel operateur=new JPanel(); operateur.setPreferredSize(new Dimension(55,225)); JPanel chiffre=new JPanel(); chiffre.setPreferredSize(new Dimension(165,225)); JPanel panEcran=new JPanel(); panEcran.setPreferredSize(new Dimension(220,30)); for(int i=0;i<tab_string.length;i++) { tab_button[i]=new JButton(tab_string[i]); tab_button[i].setPreferredSize(dim); switch(i) { case 11: tab_button[i].setForeground(Color.red); tab_button[i].addActionListener(new ResetListener()); chiffre.add(tab_button[i]); break; case 12: tab_button[i].addActionListener(new EgalListener()); operateur.add(tab_button[i]); break; case 13: tab_button[i].addActionListener(new PlusListener()); tab_button[i].setPreferredSize(dim2); operateur.add(tab_button[i]); break; case 14: tab_button[i].addActionListener(new MoinsListener()); tab_button[i].setPreferredSize(dim2); operateur.add(tab_button[i]); break; case 15: tab_button[i].addActionListener(new MultiListener()); tab_button[i].setPreferredSize(dim2); operateur.add(tab_button[i]); break; case 16: tab_button[i].addActionListener(new DivListener()); tab_button[i].setPreferredSize(dim2); operateur.add(tab_button[i]); break; default: chiffre.add(tab_button[i]); tab_button[i].addActionListener(new ChiffreListener()); break; } } panEcran.add(ecran); panEcran.setBorder(BorderFactory.createLineBorder(Color.black)); container.add(panEcran,BorderLayout.NORTH); container.add(chiffre,BorderLayout.CENTER); container.add(operateur,BorderLayout.EAST); } 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 { @Override public void actionPerformed(ActionEvent e) { // on affiche le chiffre en plus dans le label String str=((JButton)e.getSource()).getText(); if(update) { update=false; } else { if(!ecran.getText().equals("0")) str=ecran.getText()+str; } ecran.setText(str); } } //Listener affecté au bouton= class EgalListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { calcul(); update=true; clicOperateur=false; } } class PlusListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { if(clicOperateur) { calcul(); ecran.setText(String.valueOf(chiffre1)); } else { chiffre1=Double.valueOf(ecran.getText()).doubleValue(); clicOperateur=true; } operateur="+"; update=true; } } class MoinsListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { if(clicOperateur) { calcul(); ecran.setText(String.valueOf(chiffre1)); } else { chiffre1=Double.valueOf(ecran.getText()).doubleValue(); clicOperateur=true; } operateur="-"; update=true; } } class MultiListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { if(clicOperateur) { calcul(); ecran.setText(String.valueOf(chiffre1)); } else { chiffre1=Double.valueOf(ecran.getText()).doubleValue(); clicOperateur=true; } operateur="*"; update=true; } } class DivListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { if(clicOperateur) { calcul(); ecran.setText(String.valueOf(chiffre1)); } else { chiffre1=Double.valueOf(ecran.getText()).doubleValue(); clicOperateur=true; } operateur="/"; update=true; } } class ResetListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { clicOperateur=false; update=true; chiffre1=0; operateur=""; ecran.setText(""); } } }
A voir également:
- [java] bouton equal marche pas
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
Bonjour,
Il me semble que l'erreur provient de la méthode initComposant() particulièrement dans le Switch
voici la tab_string :
String[]tab_string={"1","2","3","4","5","6","7","8","9","0",".","=","C","+","-","*","/"};
tab_button[11] = "="
tab_button[12] = "C"
les boutons "=" et "reset" sont inversés !
switch(i)
{
case 11:
tab_button[i].setForeground(Color.red);
tab_button[i].addActionListener(new ResetListener());
chiffre.add(tab_button[i]);
break;
case 12:
tab_button[i].addActionListener(new EgalListener());
operateur.add(tab_button[i]);
break;
case 13:
tab_button[i].addActionListener(new PlusListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 14:
tab_button[i].addActionListener(new MoinsListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 15:
tab_button[i].addActionListener(new MultiListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 16:
tab_button[i].addActionListener(new DivListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
default:
chiffre.add(tab_button[i]);
tab_button[i].addActionListener(new ChiffreListener());
break;
}
Pour l'opérateur/ je suis pas d'accord avec le raisonnement, il faut mieux prévenir d'une erreur que de récupérer une exception, donc il vaut mieux faire un test sur l'écran
if ecran.equals("0") plutôt que de faire un try/catch qui est plus couteux en temps de calcul.
Voila j'espère que c'est ça.
Il me semble que l'erreur provient de la méthode initComposant() particulièrement dans le Switch
voici la tab_string :
String[]tab_string={"1","2","3","4","5","6","7","8","9","0",".","=","C","+","-","*","/"};
tab_button[11] = "="
tab_button[12] = "C"
les boutons "=" et "reset" sont inversés !
switch(i)
{
case 11:
tab_button[i].setForeground(Color.red);
tab_button[i].addActionListener(new ResetListener());
chiffre.add(tab_button[i]);
break;
case 12:
tab_button[i].addActionListener(new EgalListener());
operateur.add(tab_button[i]);
break;
case 13:
tab_button[i].addActionListener(new PlusListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 14:
tab_button[i].addActionListener(new MoinsListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 15:
tab_button[i].addActionListener(new MultiListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
case 16:
tab_button[i].addActionListener(new DivListener());
tab_button[i].setPreferredSize(dim2);
operateur.add(tab_button[i]);
break;
default:
chiffre.add(tab_button[i]);
tab_button[i].addActionListener(new ChiffreListener());
break;
}
Pour l'opérateur/ je suis pas d'accord avec le raisonnement, il faut mieux prévenir d'une erreur que de récupérer une exception, donc il vaut mieux faire un test sur l'écran
if ecran.equals("0") plutôt que de faire un try/catch qui est plus couteux en temps de calcul.
Voila j'espère que c'est ça.