Cargando la página...

Calculadora con interfaz gráfica en 10 minutos

Publicado por Gastón el 01/03/2009 en Java - Nivel Básico

Tabla de contenidos

Avatar de

La tabla de contenidos pertenece al artículo completo y no al contenido parcial de cada página del mismo si fuese el caso.

Leer los comentarios.

Resúmen

Este artículo explicará como realizar una calculadora básica que realice las operaciones de suma, resta, división y multiplicación desarrollada como una aplicación Java, con interface gráfica y basada en eventos. Intentaré explicar cada porción de código para que asi sirva de ejemplo para comenzar a programar en este lenguaje.

Sobre el autor

Avatar de Gastón

Gastón tiene 30 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.

Forma parte del club desde 19/10/2009 a las 20:52 habiendo estado en linea ayer a las 00:18 por última vez.

Ha publicado 47 artículos en clubdesarrolladores con un promedio de valoración de 7.87 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar

Estadísticas

  • Leido 92719 veces
  • Valorado 7.72 puntos

Calculadora en java



Java es un lenguaje que nos permite crear aplicaciones Desktop para muchos sistemas operativos. Hacer un programa en java como una calculadora con interfaz gráfica nos permite aprender sobre botones, paneles, eventos y otras cuestiones básicas del desarrollo de aplicaciones.

Programa Calculadora



Por cuestiones de espacio y legibilidad el código fuente de la calculadora en java se muestra en porciones. Si deseas el código completo, éste está adjuntado en las descargas del artículo.


/res/userimages/1/25-calculadora.PNG

Para crear la calculadora de la imágen anterior debemos tener en cuenta la interfaz y los eventos. Lo ideal es mantener el código que permite los cálculos en una clase separada, pero aqui todo se realizará en una única clase.

Para comenzar a trabajar con componentes gráficos y eventos debemos agregar al inicio del archivo de la clase las siguientes inclusiones:


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


Con esto importamos todas las clases awt, events y swing.

Estructura del programa



Nuestra clase se llamará Main y nuestro archivo main.class. Este es su esqueleto:

public class Main extends JFrame implements ActionListener {

private JTextField t;
private int a = 0, b = 0;
private int eq = 0;
private char op = 0;

public Main() {
...
}

public static void main(String[] args) {
new Main();
}

public void actionPerformed(ActionEvent e) {
...
}
}


Como se puede ver, nuestra clase extiende JFrame e implementa la interface ActionListener que nos obliga a implementar el método actionPerformed (click en botón).
Se tienen atributos privados, el primero un cuadro de texto, los demas contadores y variables de control.
Luego tenemos el constructor de la clase, que nos servirá para crear la interfaz y asignar eventos a los controles correspondientes (lo veremos ahora mismo). Luego tenemos un método estatico especial llamado main (en minúsculas) que nos permite ejecutar la calculadora.
Y por último un evento para capturar los clicks del usuario sobre los diferentes botones de la calculadora.

Creando la interfaz



Dentro del constructor podemos ver este código:


super("Calculadora Básica");
String labelButtons[] = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", "C", "=", "+"};
JPanel cp = (JPanel) this.getContentPane();
cp.setLayout(new BorderLayout());
JPanel p = new JPanel();
p.setLayout(new GridLayout(0, 4));
for (int i = 0; i < labelButtons.length; ++i) {
JButton button = new JButton(labelButtons[i]);
button.addActionListener(this);
p.add(button);
}
t = new JTextField();
t.setHorizontalAlignment(JTextField.RIGHT);
t.setText("0");
cp.add(t, BorderLayout.PAGE_START);
cp.add(p, BorderLayout.CENTER);


Primero asignamos el título de la ventana y creamos un vector con los caracteres de los botones. Si lo notaron tiene un orden algo extraño, esto se debe al algoritmo que se usa luego para crear los controles recorriendo el vector.

Posteriormente creamos un JPanel y le asignamos un layout tipo grid de 4 columnas, entonces al recorrer el vector vamos agregando a este panel objetos JButton creados con la etiqueta que obtenemos del item actual del vector y de paso ya le asignamos el controlador del evento (el mismo objeto, this, hace referencia a esta misma instancia de la clase Main).
Al salir del ciclo ya tenemos todos los botones, pero nos falta un poco para terminar el diseño. Creamos un cuadro de texto y le fijamos alineación de texto a la derecha (será donde se muestren los resultados entre otras cosas). Inicialmente le asignamos un texto igual a "0".
Al panel principal le colocamos el layout BorderLayout, agregamos el cuadro de texto arriba y al centro el panel que contiene todos los botones generados anteriormente.

Capturando los eventos



Nuestra interfaz nos quedó muy bonita, pero no hace nada. Debemos darle funcionalidad y esto lo hacemos en el evento que captura los click del usuario sobre los diferentes botones de la interfaz.


public void actionPerformed(ActionEvent e) {
char c = ((JButton) e.getSource()).getText().charAt(0);
if (c >= '0' && c <= '9') {
.... Implementación
//Log
System.out.print(a);
System.out.print(" ");
System.out.print(b);
....
}


La variable local c se asigna con el caracter que hace referencia al botón pulsado (ver el contenido del vector de etiquetas de botones que se declara en el constructor de la clase).
Con esa variable sabremos qué es lo que pulsó el usuario y consecuentemente deberemos trabajar con dicha orden.
Si es un dígito haremos una cosa, si es un signo de operatoria otra cosa. Si se trata del signo igual deberemos calcular e informar. Y si es el simbolo C (clear), simplemente resetearemos la calculadora.

El código completo de este algoritmo se puede descargar en la sección correspondiente. Es un código con varias comparaciones, pero facil de comprender.

Posiblemente el código tenga algún que otro error, si te animas a mejorarlo podes publicar tu mejora como uno de los comentarios de este artículo.

Si tiene alguna pregunta sobre éste artículo por favor deje un comentario y será respondido.

También recuerde que éste artículo tiene descargas disponibles.

Descargas

descarga Código fuente de calculadora en Java (01.03.09 | 5214 descargas | 12.59 Kbytes) Más información:

descarga Calculadora gráfica en Java, versión mejorada (10.04.09 | 5535 descargas | 13.53 Kbytes) Más información:

Comentarios

Sus comentarios son importantes.

Listado de comentarios

1
27
marzo
2009
Avatar de Jim Unikornian
Jim Unikornian aportó:
buen trabajo!
2
31
marzo
2009
Avatar de josue jonatan
josue jonatan aportó:
Hola gracias me ah servido como ejemplo para mi tarea de la universidad saludos
3
05
abril
2009
Avatar de Tatiana Garcia
Tatiana Garcia aportó:
hola me sirve mucho tu trabajo pero quisiera saber si me puedes ayudar con una mas dificil como lo es la de calculadora de windows...soy principiante en java.muchas gracias
4
10
abril
2009
Avatar de Gastón
Gastón [Autor] aportó:
Gracias por los comentarios!

He subido como descarga una versión mejorada de la calculadora. De nuevo, es una calculadora básica, no esperen una calculadora científica ni mucho menos. El código es mucho más sencillo de entender. Con el tiempo iré mejorandola.

Saludos!
5
20
abril
2009
Avatar de daniel cahuich
daniel cahuich aportó:
ey hermano graz por la ayuda, tenia algunas dudas en mis lineas de comando pero ya kedaron
hasta pronto
saludos
6
08
mayo
2009
Avatar de jesus romo
jesus romo aportó:
esta muy entendible.Me va servir mucho para mi proyecto final.
gracias
7
22
mayo
2009
Avatar de Lucas Luna
Lucas Luna aportó:
hola me gustaria que me ayudes en la creacion de una especie de hoja electronica con jtable
8
26
mayo
2009
Avatar de pedro de la villa
oye muchas, un poco complicado pa mi pero al fin lo comprendi todo
y gracias de nuevo
9
28
mayo
2009
Avatar de Marisol Rivera
Marisol Rivera aportó:
Muy bien hecho el codigo

Muy buen trabjajo





Gracias me sirvio de mucho :)
10
31
mayo
2009
Avatar de sorayda nieves
sorayda nieves aportó:
lo voy a tomar de ejmelo gracias
11
31
mayo
2009
Avatar de Gastón
Gastón [Autor] aportó:
Me alegra mucho que les sirva.
Traten de modificarlo, agregarle nuevas funcionalidades (por ejemplo que calcule el seno, el coseno, la tangente, etc.).

Cualquier duda, ya saben.

Saludos.
12
03
julio
2009
Avatar de jose luis
jose luis aportó:
MUCHAS GRACIAS UN BUEN PROYECTO, ESTAMOS EN CONTACO PARA Q ME DES UNA MANO EN JAVA.. VOY A PRACTICAR CON TU PROYECTO Y ASI PODER AGREGARLE MAS COSAS.. PERO GRACIAS
13
11
julio
2009
Avatar de Mariano Gomez
Mariano Gomez aportó:
ME HAN SALVADO LA VIDA....EN MI TAREA DE LA UNIVERSIDAD....SOY NUEVO EN ESTO ASI K ESTA UN POKO COMPLICADO PARA MI PERO SI LO HE COMPRENDIDO A LA PERFECCION!! MUCHAS GRACIAS
14
21
septiembre
2009
Avatar de christian chex
christian chex aportó:
EXELENTE TRABAJO... ESTOY MUY SATISFECHO, EN VERDAD SE LOS AGRADESCO Y SIGAN ADELANTE!!!
15
14
octubre
2009
Avatar de Hernan Torres
Hernan Torres aportó:
muchas gracias me ha servido demasiado he comprendido mas :D Thanks
16
24
octubre
2009
Avatar de maria jose chicmul xuluc
gracias me ayudo muxooooooooooooo!!!!!!!!!!!!!! pero necesito que sea iteractiva para los niños de primaria
17
07
noviembre
2009
Avatar de kari vp
kari vp aportó:
woooooooooooooooooooooooooooooooow!!!!!

mi prof me pidio algo asi pero la neta el sr. no enseña ni jota y le entendi perfecto a tu explicacion. Que buena onda que no eres de esos programadores que no les gusta enseñar lo q saben y mandan a la goma a los q apenas empezamos a aprender.

grax!!
bye
18
24
noviembre
2009
Avatar de jorge lopez
jorge lopez aportó:
genia la implementare con mas cosas como el seno y coseno para la un oye si kiero el main solo ye l kodigo en otra como se hacen comun mente como lo hago
19
30
noviembre
2009
Avatar de Cristiam Sanchez
Cristiam Sanchez aportó:
Muchas gracias,,, me parece excelente trabajo bien explicado.
20
27
enero
2010
Avatar de Monica Denisse Ayala Mercado
HOLA MUCHAS GRACIAS, ESTA EXCELENTE EL TRABAJO PERO TENGO UN PROYECTO QUE REALIZAR PARECIDO A ESTE SOLO QUE, MUESTRE LA CONVERSION DE POSTFIJA A INFIJA Y VICEVERSA....... ¿ME PODRIAS AYUDAR? X FIS
GRACIAS, SALUDITOS....
21
05
febrero
2010
Avatar de Roxangela Morillo
Hola muy bueno tu trabajo pero sera que me puedes ayudar haciendo un menu que tenga acceso a una calculadora de 10 funsiones y agenda...? eso lo tengo que hacer en java espero tu respuesta Saludos... =)
22
25
febrero
2010
Avatar de Cristian Aguilera
Hola... muy buena calculadora, estaba haciendo una similar, pero no se como hacer para que me haga la operacion con mas de una variable sin necesidad de estar dandole al igual siembre.. me explico, que realize la operacion "1+2+3-5.. etc" y que al darle click a cualquier simbolo de operacion me de el resultado y de exactamente lo mismo con el =
Muchisimas gracias si pudiera ayudarme =)
23
05
marzo
2010
Avatar de Gastón
Gastón [Autor] aportó:
Cristian Aguilera, lo que estas necesitan es implementar una calculadora que entienda notación postfija, hay mucho info en internet de como hacerlo.
La idea de esta calculadora es que sirva de base, es muy pero muy básica. Les dejo a quien le interese el trabajo de mejorarla y publicar quiza aqui su propia versión.

Saludos!
24
16
marzo
2010
Avatar de Erick Veliz
Erick Veliz aportó:
Gracias esta muy bueno, solo que no muy entiendo el array.
25
20
marzo
2010
Avatar de Cristian Macias
Cristian Macias aportó:
Muchas Gracias esta muy bien explicado me ayudo mucho a aclarar mis dudas que tenia sobre como crear la calculadora...
26
22
marzo
2010
Avatar de Angelica Oviedo
Angelica Oviedo aportó:
Hola Muchas gracias por la ayuda me da una bases para nuevos programas felicitaciones al creador la forma de explixarlo es maravillosa totalmente entendido gracias
27
22
marzo
2010
Avatar de yadira salayes
yadira salayes aportó:
Hola
De verdad me sirvio de mucho este codigo aunque algunas cosas no las entendi muy bien ya que soy estudiante de bachillerato
28
24
marzo
2010
Avatar de juan pacahuala
juan pacahuala aportó:
Parece muy bueno me voy a ver si me funk igualmente gracias esta perfect!!!
29
25
marzo
2010
Avatar de diego laime
diego laime aportó:
oye esta bueno el trabajo ke hiciste,
yo tengo un problema parecido, yo tengo ke crear u n programa ke pueda simular el trabajo ke realiza el procesador y luego mostrarlo graficamente,, mi duda es la siguiente ke libredia debo agregar para mostrar eventos ke van pasando a la ora de ejecutar el programa sin necesidad de ke el usuario tenga ke ace clic o algo asi

si sabes algo de lo que te digo me avisas porfa
30
25
marzo
2010
Avatar de Andres Restrepo
Andres Restrepo aportó:
Te felicito!! muy entendible el codigo, casualmente me has hecho la tarea, gracias
31
03
abril
2010
Avatar de Enrico Aldi
Enrico Aldi aportó:
Interesante!! muchas gracias!! voy a ver si me sirve para mi proyecto en la universidad :)
32
08
abril
2010
Avatar de Oscar Alexander Alemán López
Hola buen trabajo este ahh... tengo algo de tiempo programando java pero solo he experimentado con la consola, tu crees que podrias comentar un poco el metodo initFrame para entenderlo mejor, estoy perdido con ese metodo. Gracias.
33
16
abril
2010
Avatar de jeriko fx
jeriko fx aportó:
muy buen paorte esto me servirar para ir practicando con el netbeans Gracias =)
34
17
abril
2010
Avatar de Paul Chicaiza
Paul Chicaiza aportó:
Ejemplo bien hecho... ojala me puedan ayudar con una conexion a base de datos
35
22
mayo
2010
Avatar de pablo ortuño
pablo ortuño aportó:
muchas gracias por el tema me va a servir de mucho
36
30
mayo
2010
Avatar de Lopez Garcia
Lopez Garcia aportó:
de lo mejor me parece genial compartir el conocimiento
37
05
junio
2010
Avatar de Jaqueline Garcia Amador
ola! kisiera saber como resolver el error k me sale en la compilacion del codigo del main, ya k me sale un error en la sig. parte:

found : java.lang.Integer
required: int
a = Integer.valueOf("" + c)

^
si pudieran contestarme lo antes posible, es urgentisimo!!!grax! ;)
38
05
junio
2010
Avatar de Jaqueline Garcia Amador
found : java.lang.Integer
required: int
a = Integer.valueOf("" + c);
^
ahi aparece donde esta el error,jeje
39
22
julio
2010
Avatar de roberto furber
roberto furber aportó:
wuuuauuu!!!!!es un buen ejemplo gracias por ke la mia tenia un buen de errores!!!!!
40
01
agosto
2010
Avatar de fran merida
fran merida aportó:
hey hermano...gracias, esto m va a servir de base para hacer una que realice operaciones con parentesis y corchetes
41
15
agosto
2010
Avatar de juan rios
juan rios aportó:
despues de descomprimir los archivos como lo importo en Eclipse o como lo abro?
42
17
agosto
2010
Avatar de hector garcia
hector garcia aportó:
mila gracias me será de mucha ayuda
43
21
agosto
2010
Avatar de Alan diaz
Alan diaz aportó:
Hola acabo de ver esta pagina ... y me parece que es muy buena
ESTARE EN CONTACTO CON ESTA PAGINA ^^
44
24
agosto
2010
Avatar de byron jose
byron jose aportó:
gracias por el aport
45
03
septiembre
2010
Avatar de Gustavo Cerati
Gustavo Cerati aportó:
Esta OK..
Lo que quiero es hacer una calculadora cientifica para usarla en un celular.
Voy a intentar modificar este codigo. Gracias por el aporte. está bueno. Saludos
46
19
septiembre
2010
Avatar de john fredy agudelo sosa
HOLAS DONDE PUEDO DESCARGAR EL CODIGO DE LA VERSION YA MEJORADA DE LA CALCULADORA SENCILLA, SIN ERRORES O SI ME PUEDEN HACER EL FAVOR DE ENVIARMELA A ESTE CORREO FREDYVER81@HOTMAIL.COM
47
29
septiembre
2010
Avatar de Gastón
Gastón [Autor] aportó:
Aqui la descarga: http://www.clubdesarrolladores.com/descargas/descargar/21-calculadora-grafica-en-java-version-mejorada
48
29
octubre
2010
Avatar de Ex-Usuario
Ex-Usuario aportó:
gracias por el aporte espero que me sirva :) saludos
49
24
noviembre
2010
Avatar de javier dorantes
javier dorantes aportó:
Sabes esta calculadora me gusto pero no puedo ajustarla a mi aplicacion, solo necesito la interfaz y no puedo scarla, me podrias ayudar
50
30
noviembre
2010
Avatar de Gastón
Gastón [Autor] aportó:
El código de la interfaz es muy simple, lo podes ver aca donde hay una explicación de como fue pensada su implementación.
51
09
diciembre
2010
Avatar de martin tapia
martin tapia aportó:
ola me podrias ayudar a hacer unas practicas es que la verdad no les entiendo muchoo
52
12
diciembre
2010
Avatar de sergio lozano trujillo
que programa usaste para escribir el codigo?
estoy intentando iniciarme en java.
53
12
diciembre
2010
Avatar de Gastón
Gastón [Autor] aportó:
Sergio:

Creo que usé NetBeans. Aunque también podrías empezar con Eclipse.

Saludos.
54
05
enero
2011
Avatar de Xavier Peña
Xavier Peña aportó:
hay algun ejemplo donde se cree menus o un ejemplo de un rol de pagos para una empresa
gracias
55
24
enero
2011
Avatar de emmanuel
emmanuel aportó:
muy bien solo una pequeña critica constructiva si quiero sumar varios numeros no lo hace ya que solo creaste dos variables xd en cada metodo
56
28
enero
2011
Avatar de juan
juan aportó:
hola muy buena pero seria genial si me ayudaras con una cientifca o que por l menos le agregues tang, sen y cos xD
57
06
febrero
2011
Avatar de benancio martinez karasik
y este codigo se puede mplementar en una aplicacion movil para mi nokia e71 ?
58
11
febrero
2011
Avatar de Gastón
Gastón [Autor] aportó:
Benancio, tal como está no.
Es una aplicación de ejemplo, con fines didácticos.
Es quizá un punto de partida para crear una calculadora con más funciones, pero sobre todo sirve para aprender algunas cosas del lenguaje.


Ahora un mensaje para todos:

Les propongo que suban al sitio sus calculadoras modificadas, a ver que lograron.
59
12
febrero
2011
Avatar de Javier Vergara
Javier Vergara aportó:
Gracias Hermano, sirvio de gran ayuda...
60
11
marzo
2011
Avatar de club desarrollador
No veo el código!
Sólo esta el main en la descarga
61
16
marzo
2011
Avatar de Patsy Luna
Patsy Luna aportó:
Gracias :D
62
23
marzo
2011
Avatar de FGG
FGG aportó:
Gracias !! me servira de ayuda para la facu..
63
17
abril
2011
Avatar de Javier Mostesdeoca
Muchas gracias, gran aporte
64
29
abril
2011
Avatar de hernando melendez
Hola necesito desarrollar un 3 en raya y un solucionador de sudoku en java será que me podria colaborar.
65
29
abril
2011
Avatar de hernando melendez
mi correo es hernandoam@gmail.com
66
12
mayo
2011
Avatar de Javi Mendoza
Javi Mendoza aportó:
bien pilas buen trabajo
67
18
mayo
2011
Avatar de Luz Lopez
Luz Lopez aportó:
gracias! buen aporte!
68
01
junio
2011
Avatar de Darwin Coles
Darwin Coles aportó:
Grcias !! esta super...
69
02
junio
2011
Avatar de edder moguel morales
okis dokis gracias me sirvio un buen saludos
70
05
junio
2011
Avatar de Carlos
Carlos aportó:
Hola buen día, tengo una duda no puedo ver el codigo fuente en los archivos, me podrian ayudar a saber como lo puedo observar?

Gracias...
71
08
junio
2011
Avatar de Gastón
Gastón [Autor] aportó:
Lo podes descargar, el enlace está en esta misma página.

Saludos.
72
26
junio
2011
Avatar de jhon carrillo
jhon carrillo aportó:
ME PARECE BIEN,

BIEN POR ESE APORTE
73
09
julio
2011
Avatar de rodolfo gonzales
rodolfo gonzales aportó:
Graxias x el aporte si alguien sabe com ole puedo meter una imagen de fondo o ponerle los botones en gif ,,,porfas me gustaria que me alludaran ya que soy novato en esto ..salu2
74
09
julio
2011
Avatar de rodolfo gonzales
rodolfo gonzales aportó:
les dejo mi correo ..porfavor necesito ayuda..como le puedo meter imagen de fondo en aplet ..este es mi correo .. nirvanasoad2010@hotmail.com
75
10
agosto
2011
Avatar de brenda coria
brenda coria aportó:
disculpa despues de descargarla como la abro cn q programa o que?
76
04
septiembre
2011
Avatar de Luis Fernando Herrera Diaz
muchas gracias hombre este codigo me a servido mucho para comprender mas las bibliotecas de interfaz en java
77
07
septiembre
2011
Avatar de Faemino Garcia
Faemino Garcia aportó:
Brenda: No tienes más que descargarlos y te bajarás los archivos en formato rar. Lo cual son para usar el WINRAR para descomprimir, una vez haz descomprimido, el programa queda en formato NETBEANS.

GRACIAS POR EL PROGRAMA.
78
15
septiembre
2011
Avatar de tatiana morales
tatiana morales aportó:
esta bno pero no me descarga pero igual graciias :)
79
21
noviembre
2011
Avatar de alejandro solano
alejandro solano aportó:
perdone pero "..." que significa???
muchas gracias
80
28
noviembre
2011
Avatar de Gabriela Ochoa Regalado
Muchas gracias!!!!!!!!!!!

Me has dado una muy buena idea d que era lo que me estaba fallando en mi codigo...

;)
81
28
noviembre
2011
Avatar de andrey varela bogantes
muy bueno.. como hago para poder ver todo lo de la descarga
82
03
diciembre
2011
Avatar de diaz diaz
diaz diaz aportó:
muy bueno, lo checaré para ver que tal funciona.

Agregar un comentario

Debe estar identificado para agregar un comentario