Como Hacer una Calculadora en Java – Tutorial Paso a Paso

Como Hacer una Calculadora en Java – Tutorial Paso a Paso

En este Articulo realizaremos una Aplicacion en Java desde cero, se trata de un proyecto muy comun y recurrente en tareas escolares 😉 hablamos de Como Hacer una Calculadora en Java paso a paso sin ayuda de asistentes graficos que te generen la Interfaz. Si bien los Asistentes te ayudan mucho y te ahorran tiempo valioso que puedes invertir en otros aspectos de tu App en este Tutorial lo que queremos es aprender a programar y que mejor que hacerlo escribiendo el codigo limpio y puro que entendamos completamente ( en ocaciones los asistentes graficos te generan mucho codigo basura 😕 ). Asi que vamos ya al Tuto..

Comenzamos …

Recientemente un amigo me pidio ayuda para realizar este proyecto como una tarea en su Escuela y me vino a la cabeza como los mismos trabajos son pedidos una y otra vez 😀 asi es que esa es la razon que me motivo a realizar este mini tuto. Aclarar que estoy programando con Netbeans ( mas por costumbre 😀 ) pero no es para nada necesario, como te digo no haremos uso de ningun asistente grafico solo escribire el codigo ahi y compilare.. tu puedes usar otro IDE, el notepad o hasta el block de notas 😀 solo necesitarias un compilador.

La estructura base de este proyecto #calculadoraenjava es este ..

Como Hacer una Calculadora en Java 1

En el paquete jmr.blog.res tengo una imagen png que sera el icono de la calculadora y es de 20×20, el codigo de la clase Ventana es el siguiente:


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy


package jmr.blog;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Ventana extends JFrame{
    
    public Ventana(){
        //TITULO
        setTitle("Calculadora JMR");
        //TAMAÑO
        setSize(250,300);
        //DIMENSIONABLE O NO
        setResizable(false);
        //LOCACION
        setLocationRelativeTo(null);
        //SALIR AL CLICKEAR LA CRUZ
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //ICONO DE LA CALCULADORA
        setIconImage(new ImageIcon(getClass().getResource("/jmr/blog/res/favicon.png")).getImage());
        //METODO PARA CREAR INTERFAZ Y AGREGAR EVENTOS A BOTONES
        init();
        //HACEMOS VISIBLE LA APP
        setVisible(true);
    }

    private void init() {
        //INTERFAZ Y FUNCIONALIDAD
    }
    
    public static void main(String args[]){
        //CREAMOS UN NUEVO OBJETO VENTANA
        new Ventana();
    }
}

que al ejecutar tendremos simplemente un cascaron de la calculadora 😀

Como Hacer una Calculadora en Java 2

Ahora si manos a la obra..

El Diseño, Paneles y Layouts

Necesitamos ahora declarar 3 variables.


JPanel panel_principal;
JPanel panel_botones;
JTextField caja;

El panel Principal con un layout ( borderLayout ) en el que puedes agregar elementos al norte sur este u oeste que contendra al norte una caja de Texto ( JTextField ) y al centro un panel con los botones de la calculadora ( JPanel ).

Ahora el metodo init lucira asi


private void init() {
     //INTERFAZ Y FUNCIONALIDAD
     //CREAMOS PANEL PRINCIPAL CON LAYOUT BORDERLAYOUT
     panel_principal = new JPanel();
     panel_principal.setLayout(new BorderLayout());
     //EN EL NORTE IRA LA CAJA DE TEXTO
     caja = new JTextField();
     panel_principal.add("North",caja);
     //EN EL CENTRO IRA EL PANEL DE BOTONES
     panel_botones = new JPanel();
     //El GRIDLAYOUT RECIBE COMO PARAMETROS:
     //FILAS,COLUMNAS ESPACIADO ENTRE FILAS,
     //ESPACIADO ENTRE COLUMNAS
     panel_botones.setLayout(new GridLayout(5,4,8,8));
     //agregarBotones();
     panel_principal.add("Center",panel_botones);
     //AGREGAMOS TODO EL CONTENIDO QUE ACABAMOS DE HACER EN
     //PANEL_PRINCIPAL A EL PANEL DEL FORMULARIO
     getContentPane().add(panel_principal);
}

Como puedes ver todo esta comentado para que no te pierdas con su funcion, si te fijas tambien, el metodo agregarBotones esta comentado ( // ), esto es porque en este metodo agregaremos mas adelante los botones de la interfaz de nuestra calculadora, si ejecutamos lucira asi:

Como Hacer una Calculadora en Java 3

Ahora vamos a agregar codigo al metodo agregarBotones() 😀

Agregando los Botones y sus Respectivos Eventos

Simplemente escribimos el codigo para agregar botones en el metodo agregarBotones() ( recuerda descomentarlo 😀 ), pero antes declaramos algunas variables nuevas:


JButton boton[];
double op1=0,op2=0;
String operacion="";
boolean nueva=true;

Un arreglos de botones, dos variables double para almacenar los valores de cada operacion de suma, resta, multiplicacion o division, una cadena de texto para almacenar el tipo de operacion que estamos realizando y una variable llamada «nueva» que indicara cuando se inicie una nueva operacion y asi borrar pantalla.

El codigo del metodo agregarBotones ( no te asustes si es un poco largo 😀 es bastante repetitivo ) es el siguiente:


private void agregarBotones() {
        //INICIALIZAMOS EL ARREGLO DE BOTONES
        boton = new JButton[20];
        //INICIALIZAMOS LOS BOTONES
        boton[0]=new JButton("CE");
        boton[1]=new JButton("");
        boton[2]=new JButton("");
        boton[3]=new JButton("");
        boton[4]=new JButton("7");
        boton[5]=new JButton("8");
        boton[6]=new JButton("9");
        boton[7]=new JButton("/");
        boton[8]=new JButton("4");
        boton[9]=new JButton("5");
        boton[10]=new JButton("6");
        boton[11]=new JButton("*");
        boton[12]=new JButton("1");
        boton[13]=new JButton("2");
        boton[14]=new JButton("3");
        boton[15]=new JButton("-");
        boton[16]=new JButton("0");
        boton[17]=new JButton(".");
        boton[18]=new JButton("=");
        boton[19]=new JButton("+");
        //AGREAMOS LOS BOTONES AL PANEL BOTONES
        for(int i=0;i<20;i++){
            panel_botones.add(boton[i]);
        }
        //EVENTOS DE LOS BOTONES
        //OPERACIONES
        boton[19].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                try{
                    if(op1!=0)
                        op1=op1+Double.parseDouble(caja.getText());
                    else
                        op1=Double.parseDouble(caja.getText());
                    operacion="suma";
                    caja.setText("");
                }catch(Exception err){}
            }
        });
        boton[15].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                try{
                    if(op1!=0)
                        op1=op1-Double.parseDouble(caja.getText());
                    else
                        op1=Double.parseDouble(caja.getText());
                    operacion="resta";
                    caja.setText("");
                }catch(Exception err){}
            }
        });
        boton[11].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                try{
                    if(op1!=0)
                        op1=op1*Double.parseDouble(caja.getText());
                    else
                        op1=Double.parseDouble(caja.getText());
                    operacion="multiplicacion";
                    caja.setText("");
                }catch(Exception err){}
            }
        });
        boton[7].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                try{
                    if(op1!=0)
                        op1=op1/Double.parseDouble(caja.getText());
                    else
                        op1=Double.parseDouble(caja.getText());
                    operacion="division";
                    caja.setText("");
                }catch(Exception err){}
            }
        });
        //NUMEROS Y PUNTO DECIMAL
        boton[4].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"7");
            }
        });
        boton[5].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"8");
            }
        });
        boton[6].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"9");
            }
        });
        boton[8].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"4");
            }
        });
        boton[9].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"5");
            }
        });
        boton[10].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"6");
            }
        });
        boton[12].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"1");
            }
        });
        boton[13].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"2");
            }
        });
        boton[14].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"3");
            }
        });
        boton[16].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+"0");
            }
        });
        boton[17].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                if(nueva){caja.setText("");nueva=false;}
                caja.setText(caja.getText()+".");
            }
        });
        //IGUAL
        boton[18].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                try{
                    op2=Double.parseDouble(caja.getText());
                }catch(Exception err){}
                if(operacion.equals("suma")){
                    double res=op1+op2;
                    caja.setText(String.valueOf(res));
                    op1=op2=0;
                    operacion="";
                }else if(operacion.equals("resta")){
                    double res=op1-op2;
                    caja.setText(String.valueOf(res));
                    op1=op2=0;
                    operacion="";
                }else if(operacion.equals("multiplicacion")){
                    double res=op1*op2;
                    caja.setText(String.valueOf(res));
                    op1=op2=0;
                    operacion="";
                }else if(operacion.equals("division")){
                    double res=op1/op2;
                    caja.setText(String.valueOf(res));
                    op1=op2=0;
                    operacion="";
                }
                nueva=true;
            }
        });
        //CE
        boton[0].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent evt){
                caja.setText("");
                op1=op2=0;
                operacion="";
            }
        });
    }

y al ejecutar ya tenemos nuestra calculadora armada y funcionando 😉

Como Hacer una Calculadora en Java 4

Como Hacer una Calculadora en Java

Clic para valorar esta información
[Total: 2 Promedio: 3]