EpSilon proyecto
/**
* Creado por : Mon Mar 24 20:27:00 CET 2008
* Autor : Parras
*/






import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculadora extends JFrame implements ActionListener  {

   
boolean nuevo = true;
   
float   resultado_total = 0.0f;
   String  ultimo =
"=";
   Label pantalla =
null;
   Button b
;
   JPanel panel
, panel2;

   
public Calculadora() {
       setTitle
("Calculadora");

       setSize
(200, 200);

       Pantalla
();

       Teclado
();
 
}

 
private void Pantalla() {

       panel =
new JPanel();
       panel
.setLayout(new GridLayout(1, 1));
       pantalla =
new Label();

       pantalla
.setText("0");
       pantalla
.setAlignment(Label.RIGHT);
       pantalla
.setForeground(Color.black);
       pantalla
.setBackground(Color.white);

       panel
.add(pantalla);
       add
("North", panel);
 
}

   
public void Teclado () {
       panel2 =
new JPanel();
       panel2
.setLayout(new GridLayout(4, 4));

       addBoton
("7", Color.blue);
E:\Util\workspace\prueba\Workspace\proyecto Página 1 de  4


EpSilon proyecto
        addBoton("8", Color.blue);
       addBoton
("9", Color.blue);
       addBoton
("/", Color.red);
       addBoton
("C", Color.red);

       addBoton
("4", Color.blue);
       addBoton
("5", Color.blue);
       addBoton
("6", Color.blue);
       addBoton
("*", Color.red);
       addBoton
("sqrt", Color.red);

       addBoton
("1", Color.blue);
       addBoton
("2", Color.blue);
       addBoton
("3", Color.blue);
       addBoton
("-", Color.red);
       addBoton
("AC", Color.red);

       addBoton
("0", Color.blue);
       addBoton
("+/-", Color.red);
       addBoton
(".", Color.red);
       addBoton
("+", Color.red);
       addBoton
("=", Color.red);

       add
("Center", panel2);
 
}

 
private void addBoton(String n, Color color) {
      b =
new Button(n);

      b
.setForeground(color);

      panel2
.add(b);

      b
.addActionListener( this );
 
}


 
public void actionPerformed(ActionEvent event) {

       String digit   = event
.getActionCommand();
       String s     = pantalla
.getText();

       
// Logic based in a source of Santiago Pavón

       
float  valor = 0;
       
try {
           valor =
new Float(s).floatValue();
       
} catch (Exception e) {
           
if (!digit.equals("C")) return;
       
}

       
if ("0123456789".indexOf(digit) != -1) {

           
if (nuevo) {
               nuevo =
false;
E:\Util\workspace\prueba\Workspace\proyecto Página 2 de  4


EpSilon proyecto
                pantalla.setText(digit);
           
} else {
               pantalla
.setText(s + digit);
           
}

       
} else if (digit.equals(".")) {

           
if (nuevo) {
               nuevo =
false;
               pantalla
.setText("0.");
           
} else {
               pantalla
.setText(s + digit);
           
}

       
} else if (digit.equals("sqrt")) {

           valor =
(float)Math.sqrt(valor);
           pantalla
.setText(String.valueOf(valor));
           nuevo =
true;

       
} else if (digit.equals("+/-")) {

           valor = -valor
;
           pantalla
.setText(String.valueOf(valor));
           nuevo =
true;

       
} else if (digit.equals("C")) {

           resultado_total  =
0;
           pantalla
.setText("0");
           ultimo =
"=";
           nuevo =
true;

       
} else {

           
char c = ultimo.charAt(0);

           
switch (c) {
               
case '=': resultado_total  = valor; break;
               
case '+': resultado_total += valor; break;
               
case '-': resultado_total -= valor; break;
               
case '*': resultado_total *= valor; break;
               
case '/': resultado_total /= valor; break;
           
}
     ultimo = digit
;
     nuevo =
true;
     pantalla
.setText(String.valueOf(resultado_total));
 
}
}


public static void main(String[] args) {
 Calculadora cal =
new Calculadora();
  Rectangle bounds = cal
.getBounds();
  Dimension size = cal
.getSize();
E:\Util\workspace\prueba\Workspace\proyecto Página 3 de  4


EpSilon proyecto
   cal.setLocation((int) (bounds.getX() + (bounds.getWidth() - size.getWidth()) / 2),
(int) (bounds.getY() + (bounds.getHeight() - size.getHeight()) / 2));
 cal
.setVisible(true);
 
}
}
E:\Util\workspace\prueba\Workspace\proyecto Página 4 de  4