Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2008, 08:41
Avatar de djagu_26
djagu_26
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 4 meses
Puntos: 6
problema java calculadora

Hola resulta que estoy haciendo una calculadoora en swing pero tengo unos problemitas con el tema de los calculos, o sea mi intencion es que la persona que la use pueda ir sumando varias cosas o sea pueda hacer 5 + 6 + 8 =19 pero a medida que valla sumando deberia ir mostrando el resultado de la suma sin tener que apretar el boton de = aqui les dejo el codigo se que algo esta fallando debido a que no me suma correctamente. no les puedo dejar el codigo completo porq es muy exteso pero les dejo parte del mismo

Código:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author  djagu_26
 */
public class Calculadora extends javax.swing.JFrame {

    String operador = "";
    String valor1 = "";
    String valor2 = "";
    DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
    DecimalFormat formato;
    KeyListener keys = new KeyListener() {

        public void keyTyped(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD0) {
                txtVisor.setText(txtVisor.getText() + "0");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD1) {
                txtVisor.setText(txtVisor.getText() + "1");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD2) {
                txtVisor.setText(txtVisor.getText() + "2");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD3) {
                txtVisor.setText(txtVisor.getText() + "3");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD4) {
                txtVisor.setText(txtVisor.getText() + "4");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD5) {
                txtVisor.setText(txtVisor.getText() + "5");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD6) {
                txtVisor.setText(txtVisor.getText() + "6");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD7) {
                txtVisor.setText(txtVisor.getText() + "7");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD8) {
                txtVisor.setText(txtVisor.getText() + "8");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD9) {
                txtVisor.setText(txtVisor.getText() + "9");
            }
            //Numero del .
            if (e.getKeyCode() == 110) {
                if (!hayComa(txtVisor.getText())) {
                    txtVisor.setText(txtVisor.getText() + ",");
                }
            }
            //Numero del +
            if (e.getKeyCode() == 107) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "+";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_MULTIPLY) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "*";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            //Numero del -
            if (e.getKeyCode() == 109) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "-";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_DIVIDE) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "/";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                txtVisor.setText("");
                operador = "";
                valor1 = "";
                valor2 = "";
            }
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                calcular();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    };

    /** Creates new form Calculadora */
    public Calculadora() {
        initComponents();
        txtVisor.setText("");
        addKeyListener(keys);
        simbolos.setDecimalSeparator(',');
        formato = new DecimalFormat("####,##", simbolos);

    }

    public boolean hayComa(String text) {
        for (int i = 0; i < text.length(); i++) {
            if (String.valueOf(text.charAt(i)).equals(",")) {
                return true;
            }
        }
        return false;
    }

    public void calcular() {
        if (!valor1.equals("") && !operador.equals("")) {
            double total = 0;
            try {
                Number primero = formato.parse(valor1);
                double valorPrimero = primero.doubleValue();
                double valorSegundo = 0;
                if (!valor2.equals("")) {
                    Number segundo = formato.parse(valor2);
                    valorSegundo = segundo.doubleValue();
                } else {
                    valor2 = txtVisor.getText();
                }

                if (operador.equals("+")) {
                    total = valorPrimero + valorSegundo;
                }

                if (operador.equals("-")) {
                    total = valorPrimero - valorSegundo;
                }

                if (operador.equals("*")) {
                    total = valorPrimero * valorSegundo;
                }

                if (operador.equals("/")) {
                    if (valorSegundo != 0) {
                        total = valorPrimero / valorSegundo;
                    }
                }
            } catch (ParseException ex) {
                Logger.getLogger(Calculadora.class.getName()).log(Level.SEVERE, null, ex);
            }

            txtVisor.setText(String.valueOf(total));
            valor1 = txtVisor.getText();
            valor2 = "";
        }
    }

 }
saludos y muchas gracias
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]