Código:
saludos y muchas gracias 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 = ""; } } }