Autor Tema: Actividad 3 SENA (Archivos y Excepciones) : Calculadora  (Leído 120 veces)

[D-m-K]

  • Administrador
  • Mensajes: 229
  • [-.|.-]
    • MSN Messenger - d4rk.m0nk3y@hotmail.com
    • Ver Perfil
    • Red Informatica Colombiana
    • Email
Actividad 3 SENA (Archivos y Excepciones) : Calculadora
« : octubre 13, 2010, 11:07:07 pm »
Bueno aqui os traigo la calculadora propuesta en la tercera actividad del sena para el manejo de archivos y excepciones. Realmente la calidad y la cantidad de las funciones de la calculadora no es algo que sorprenda, pues es un prototipo muy basico pero funcional en Swing.

Perdonaran que no esta muy documentada, pero por razones de tiempo solo se pudo codificar. ;)

Calculadora.java
Código: (java) [Seleccionar]
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

/**
 * Calculadora de la tercera semana de archivos y excepciones SENA
 * @author Edwin Torres
 */
public class Calculadora extends JFrame implements ActionListener {

    //Miembros de clase
    private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b0;
    private JButton bsuma, bresta, bmultiplica, bdivide, braiz, bxtoy, bclear, bclear_empty, bigual;
    private JTextField entrada;
    private JPanel panelSuperior, panelInferior;
    private JLabel mensajes;
    private String memoria, operador;
    private double num1, num2, resultado;

    public Calculadora() {
        //Variables de memoria
        memoria = "";
        operador = "";

        //Botones numericos de la calculadora
        b1 = new JButton("1");
        b2 = new JButton("2");
        b3 = new JButton("3");
        b4 = new JButton("4");
        b5 = new JButton("5");
        b6 = new JButton("6");
        b7 = new JButton("7");
        b8 = new JButton("8");
        b9 = new JButton("9");
        b0 = new JButton("0");

        //Botones de operadores de la calculadora
        bsuma = new JButton("+");
        bresta = new JButton("-");
        bmultiplica = new JButton("x");
        bdivide = new JButton("/");

        //Botones de funciones de la calculadora
        bxtoy = new JButton("x^y");
        bclear = new JButton("C");
        bclear_empty = new JButton("CE");
        braiz = new JButton("√");
        bigual = new JButton("=");

        //Display de la calculadora
        panelSuperior = new JPanel(new GridLayout(2, 1, 10, 10));
        entrada = new JTextField(20);
        mensajes = new JLabel("", JLabel.RIGHT);

        entrada.setHorizontalAlignment(JTextField.RIGHT);
        panelSuperior.add(entrada, BorderLayout.CENTER);
        panelSuperior.add(mensajes);

        panelInferior = new JPanel(new GridLayout(5, 4, 1, 1));
        panelInferior.setBackground(Color.WHITE);
        panelInferior.add(b7);
        panelInferior.add(b8);
        panelInferior.add(b9);
        panelInferior.add(bclear);
        panelInferior.add(b4);
        panelInferior.add(b5);
        panelInferior.add(b6);
        panelInferior.add(bclear_empty);
        panelInferior.add(b1);
        panelInferior.add(b2);
        panelInferior.add(b3);
        panelInferior.add(bsuma);
        panelInferior.add(b0);
        panelInferior.add(bresta);
        panelInferior.add(bmultiplica);
        panelInferior.add(bdivide);
        panelInferior.add(braiz);
        panelInferior.add(bxtoy);
        panelInferior.add(bigual);

        //Adicion de listeners
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
        b5.addActionListener(this);
        b6.addActionListener(this);
        b7.addActionListener(this);
        b8.addActionListener(this);
        b9.addActionListener(this);
        b0.addActionListener(this);
        bsuma.addActionListener(this);
        bresta.addActionListener(this);
        bmultiplica.addActionListener(this);
        bdivide.addActionListener(this);
        braiz.addActionListener(this);
        bxtoy.addActionListener(this);
        bclear.addActionListener(this);
        bclear_empty.addActionListener(this);
        bigual.addActionListener(this);

        //Adicion de los paneles a la calculadora
        getContentPane().add(panelSuperior, BorderLayout.NORTH);
        getContentPane().add(panelInferior, BorderLayout.CENTER);

        //Adicion de botones
        setSize(240, 250);
        setBackground(Color.WHITE);
        setVisible(true);


        //Adicion de eventos
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("Cerrando ventana");
                JOptionPane.showMessageDialog(null, " : Calcauladora V1.0 | Edwin Torres: ");
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        Calculadora app = new Calculadora();
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == b1) {
            memoria += b1.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b2) {
            memoria += b2.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b3) {
            memoria += b3.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b4) {
            memoria += b4.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b5) {
            memoria += b5.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b6) {
            memoria += b6.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b7) {
            memoria += b7.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b8) {
            memoria += b8.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b9) {
            memoria += b9.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == b0) {
            memoria += b0.getText();
            entrada.setText(memoria);
            mensajes.setText("");
        }
        if (e.getSource() == bclear_empty) {
            if (memoria.length() > 0) {
                memoria = memoria.substring(0, (memoria.length() - 1));
            }
            entrada.setText(memoria);
            mensajes.setText("Limpiar Caracter");
            temporizador(3000, "");
        }
        if (e.getSource() == bclear) {
            memoria = "";
            entrada.setText(memoria);
            mensajes.setText("Limpiar Memoria");
            resultado = 0.0;
            num1 = 0.0;
            num2 = 0.0;
            temporizador(3000, "");
        }
        if (e.getSource() == bsuma) {
            setNum1();
            operador = "+";
            mensajes.setText("Suma");
        }
        if (e.getSource() == bresta) {
            setNum1();
            operador = "-";
            mensajes.setText("Resta");
        }
        if (e.getSource() == bmultiplica) {
            setNum1();
            operador = "x";
            mensajes.setText("Multiplicacion");
        }
        if (e.getSource() == bdivide) {
            setNum1();
            operador = "/";
            mensajes.setText("Division");
        }
        if (e.getSource() == braiz) {
            setNum1();
            operador = "√";
            mensajes.setText("Raiz cuadrada");
            getResultado();
        }
        if (e.getSource() == bxtoy) {
            setNum1();
            operador = "^";
            mensajes.setText("Potencia");
        }
        if (e.getSource() == bigual) {
            getResultado();
        }
    }

    public void temporizador(int delay, final String msg) {
        ActionListener taskPerformer = new ActionListener() {

            public void actionPerformed(ActionEvent evt) {
                mensajes.setText("" + msg);
            }
        };
        new Timer(delay, taskPerformer).start();
    }

    public void getResultado() {
        System.out.println("operador" + operador);
        setNum2();
        try {
            if (operador.equals("+")) {
                resultado = num1 + num2;
            }
            if (operador.equals("-")) {
                resultado = num1 + num2;
            }
            if (operador.equals("x")) {
                resultado = num1 * num2;
            }
            if (operador.equals("/")) {
                if (num2 == 0) {
                    mensajes.setText("No se puede dividir por cero");
                    temporizador(3000, "");
                } else {
                    resultado = num1 / num2;
                }
            }
            if (operador.equals("√")) {
                try{
                    resultado = Math.sqrt(num1);
                } catch(NumberFormatException ex){
                    mensajes.setText("Error en estructura para el numero");
                    temporizador(3000, "");
                }
            }
            if (operador.equals("^")) {
                try{
                    resultado = Math.pow(num1, num2);
                }catch(NumberFormatException ex){
                    mensajes.setText("Error hallando potencia");
                    temporizador(3000, "");
                }
            }


            //Mensajes de consola
            System.out.println("num1 = " + num1);
            System.out.println("num2 = " + num2);
            System.out.println("resultado = " + resultado);
            entrada.setText("" + resultado);
            memoria = "" + resultado;
        } catch (NumberFormatException ex) {
            mensajes.setText("Formato invalido");
        }

    }

    public void setNum1() {
        try {
            num1 = Double.parseDouble(memoria);
            memoria = "";
            entrada.setText(memoria);
        } catch (NumberFormatException ex) {
        }
    }

    public void setNum2() {
        if (memoria != "") {
            num2 = Double.parseDouble(memoria);
            entrada.setText(memoria);
        }
    }
}


Hakuna Matata & Happy Bandwith.
:: Todas las grandes cosas que se disfrutan son el producto de las pequeñas cosas que se logran ::