Saltar navegación

20260420 JavaFX_Calculadora2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 20 de abril de 2026 por Raquel G.

1 visualizaciones

Descargar la transcripción

Bueno, pues aquí, aunque ha sido poco, aunque ha sido poquito, algo hemos ensuciado el controlador, ¿verdad? 00:00:00
Imaginaos que es una aplicación más grande que trabaja con colecciones de datos, de nombres, de cosas. 00:00:09
Pues no podemos meterlo todo aquí. 00:00:16
Empezaría a ser un controlador con una lista de propiedades que no le pegan nada y es inmanejable. 00:00:18
Entonces, aquí lo natural, aunque en este caso la implicación ha sido pequeña, lo natural es, 00:00:24
mi aplicación que va a ser una calculadora 00:00:29
una calculadora es un objeto que hace cosas 00:00:32
pues por qué no me declaro yo una clase calculadora 00:00:35
con los datos que la caracterizan 00:00:38
que serán los operandos 00:00:40
con las operaciones que hace, sumar, restar 00:00:42
tengo ahí mi objeto calculadora 00:00:44
con sus características, con sus operaciones 00:00:46
y el controlador usa ese objeto, punto pelota 00:00:49
habría sido lo natural, ¿verdad? 00:00:53
entonces, pues por ejemplo 00:00:55
si rápidamente nos hacemos 00:00:58
un paquete, pues modelo por aquí 00:01:00
otro paquete más para las clases de modelo 00:01:02
pues esdam1.model 00:01:10
me hago yo 00:01:13
mi paquete y aquí me meto 00:01:14
calculadora 00:01:16
vale 00:01:17
y aquí ya pues el diseño que yo quiera 00:01:28
pues 00:01:30
En calculadora, pues por ejemplo 00:01:31
Se puede caracterizar 00:01:33
Por sus dos operandos 00:01:35
Pero esto ya, bueno 00:01:37
Esto ya implicaría en función del tipo de calculadora 00:01:44
Que vaya a hacer, de todo eso ya hacer 00:01:47
Un buen diseño de la calculadora, claro 00:01:49
Pero bueno, vamos a dejarlo así 00:01:51
Para no complicarnos 00:01:53
Y ahora, lógicamente la calculadora 00:01:54
Tendría un método suma 00:01:57
Un método sumar 00:01:59
Que es lo que haría 00:02:02
Pues devolvería 00:02:05
op1 más op2 00:02:06
por ejemplo 00:02:11
y así las operaciones que yo quisiera 00:02:12
con la calculadora 00:02:15
bueno, lo que fuera 00:02:16
esto ya sería una cuestión de que yo ya me sentara 00:02:32
a diseñar exactamente 00:02:34
cómo va a funcionar mi calculadora 00:02:35
y por qué se tiene que caracterizar 00:02:37
a lo mejor 00:02:40
tendría sentido que 00:02:41
se caracterizara por una variable 00:02:44
operación que formara parte de un enumerado 00:02:45
y un único método calcular 00:02:48
con un switch case en función del enum 00:02:49
que hiciera el cálculo que fuera, eso ya es un tema 00:02:51
de diseñar bien este objeto 00:02:53
entonces ahora 00:02:55
¿qué ocurriría en nuestro controlador? 00:02:57
pues nuestro controlador 00:02:59
en lugar de meter basura aquí 00:03:01
de cosas que no le caracterizan 00:03:03
operandos, que son eso de operandos 00:03:05
mi controlador 00:03:07
usaría un objeto 00:03:09
calculadora 00:03:12
eso ya sí, los objetos 00:03:13
del modelo los tiene que usar, claro 00:03:15
mi controlador tendría la calculadora 00:03:17
porque tiene que tener acceso a la calculadora 00:03:28
lógicamente, pero ya está 00:03:30
y ahora, ¿qué haría? pues botón suma 00:03:31
pues fijaría 00:03:36
el operando 1 de calculadora 00:03:37
vamos a ponerle un set, que no le hemos puesto set ni nada 00:03:39
pues ¿qué podría hacer entonces 00:03:41
mi botón suma? 00:03:54
pues mi botón suma 00:03:57
pues haría, oye tú 00:03:58
lo único que hace mi botón suma es 00:04:00
a mi calculadora 00:04:02
fíjale el operando 1 00:04:04
ya está, eso es lo que es el botón suma 00:04:06
fijarle el operando 1 a la calculadora, nada más 00:04:15
¿qué haría 00:04:18
el botón igual? 00:04:20
fijarle el operando 2 00:04:22
y luego llamar 00:04:24
a la operación suma 00:04:26
por ejemplo 00:04:27
pues entonces 00:04:29
¿qué es lo que haría el operando 2? 00:04:30
pues ya fijarle 00:04:33
perdón, el botón igual 00:04:35
fijarle el operando 2 00:04:37
con lo que haya en el área de texto 00:04:42
y ahora ya poner aquí el resultado de la suma 00:04:44
que será calc.sumar 00:04:51
ya está, como me devuelvo un entero 00:04:55
pues lo convierto y se acabó 00:04:58
entonces esto tiene más sentido 00:05:00
mi aplicación va a usar cosas 00:05:17
va a usar calculadoras, países, alumnos, facturas 00:05:19
pues el diseño yo lo tendré que hacer 00:05:23
igualmente de las entidades 00:05:26
y ahora ya el controlador llama 00:05:28
a los métodos de esas entidades 00:05:31
para hacer lo que toque hacer, no se convierte 00:05:33
él en una entidad 00:05:35
él no se convierte en una calculadora 00:05:36
no, usa una calculadora 00:05:39
y llama a los métodos y lo que sea 00:05:41
vale 00:05:43
voy a ejecutarlo, no voy a hacer que algo de lo que haya 00:05:52
escrito no tenga sentido 00:05:55
donde tengo el 00:05:57
más calculadora 00:06:04
vale, pues venga 00:06:06
234 00:06:12
más 00:06:16
igual a 269 00:06:18
vale, aquí en el 00:06:21
evento de los botones también sería más 00:06:24
bonito si lo ponemos 00:06:25
un set focus, tendría que haber un método 00:06:27
para hacer cual de las 00:06:29
para que ganara el foco este, pero eso ya es 00:06:31
ver los métodos, pero yo le doy a más 00:06:33
y a mi me gustaría que se 00:06:35
quedara aquí ya habilitado para que no tuviera yo 00:06:37
que pulsar, hacer click ahí 00:06:39
Pero habrá algún método 00:06:41
Set focus o set lo que sea 00:06:43
Para decidir cual quiero yo que sea visible 00:06:46
Pero eso ya son las cositas 00:06:48
Que uno se puede poner aquí 00:06:50
A jugar y hacer el tonto 00:06:52
Vale, bueno pues entonces 00:06:54
Haced ahora vosotros 00:07:01
Pues una aplicación 00:07:03
Para averiguar 00:07:05
Que te muestre 00:07:06
El número de habitantes de una serie de países 00:07:09
Tendrá un desplegable 00:07:13
seleccionas el país y como respuesta 00:07:17
tiene el país, te mostrará 00:07:19
los habitantes de Nigeria 00:07:20
son no sé cuántos mil 00:07:23
¿por qué no de Nigeria? 00:07:24
aunque sea de Nigeria 00:07:29
de Bali, de donde te dé la gana 00:07:30
pero 00:07:32
si el enunciado es 00:07:35
aplicación que mediante un 00:07:38
desplegable que te muestre países 00:07:41
te muestre 00:07:43
los habitantes del país en el que 00:07:45
tomar más, ese es el enunciado 00:07:47
vale, ahora empezamos a desgranar eso 00:07:48
y te dice 00:07:50
los habitantes de, Nigeria no le ha gustado 00:07:52
pues yo que sé, los habitantes de Etiopía son 00:07:54
los que sean, vale 00:07:56
entonces, ahora ya empezamos a desgranar la aplicación 00:07:58
la primera 00:08:01
pregunta sería, ¿y de dónde sacan los datos? 00:08:03
¿se los inventa? hombre, pues no es feo 00:08:05
los tendría que sacar de algún sitio 00:08:06
de un fichero, lo ideal sería que 00:08:08
estudiara una base de datos, pero no se los puede 00:08:11
poner una base de datos, pues entonces 00:08:13
Primera restricción 00:08:14
Vamos a dejar la estructura de aplicación 00:08:16
Lanzada con el fichero 00:08:20
Para que lo hagáis todos igual 00:08:22
Y luego ya hacer la vista 00:08:23
Y el controller ya lo hacéis vosotros 00:08:26
Entonces pues venga 00:08:28
Si hacemos otra vez 00:08:30
Y ahora ya copiamos en el 00:08:31
Lo que hay que copiar 00:08:33
Que sigue sin funcionar 00:08:35
Pues ahora lo miramos 00:08:40
Vale 00:08:42
A ver 00:08:43
Venga 00:08:44
Es .dam1 00:08:51
Países 00:08:54
Voy a llamar a esta 00:08:58
Países, le cambiamos 00:08:59
La máquina virtual 00:09:10
Y el nivel de compilación 00:09:11
Vale, ya está 00:09:19
Ahora, el POM 00:09:35
Vamos a coger el nuestro de referencia 00:09:38
De un proyecto que os haya 00:09:41
Funcionado 00:09:42
Cogemos todo lo que va de descripción hacia abajo 00:09:43
Lo copiamos todo 00:09:50
Y lo ponemos en el nuestro de países 00:09:54
Debajo de descripción 00:10:03
Pegamos 00:10:05
Revisamos 00:10:06
La aplicación 00:10:09
El nombre de la clase 00:10:11
Es uno app 00:10:13
Países la voy a llamar yo 00:10:14
Pues países 00:10:17
Os acordáis de poner aquí vuestra clase main 00:10:18
Como la vayáis a llamar 00:10:21
Lo demás 00:10:22
Vamos a usar la IMAX dependencia 00:10:25
no hay que cambiar nada, nivel 25 00:10:27
para que se quite ese rojo, la S 00:10:29
vale 00:10:31
y ahora 00:10:32
me hago mi clase main 00:10:37
mi paquete 00:10:39
yo la he decidido llamar 00:10:44
países, pues países 00:10:55
tiene que heredar 00:10:56
application 00:11:03
y por tanto implementar 00:11:05
start 00:11:12
y además 00:11:14
de estar pues el main lógicamente que tenía que haberlo puesto vale y aquí pues vamos a copiar y 00:11:19
pegar nuestro main este mismo países el start pues lo mismo yo puedo copiar y pegar vale en 00:11:40
Voy a cambiar este nombre, le voy a cambiar el título a países y tendremos que generar un archivo países.fxml. 00:12:06
Entonces, la arquitectura está. 00:12:38
La pregunta que nos planteábamos, a ver, primero, la aplicación de dónde va a sacar los datos. 00:12:47
Hemos dicho que no se los va a inventar, pues se los vamos a poner en un fichero. 00:12:53
Vale, pues vamos a meter el fichero 00:12:57
con los datos. 00:12:59
Vamos a meterlo. 00:13:00
Bueno, para que no se os complique 00:13:03
la vida, pues aquí en el raíz del proyecto. 00:13:05
En el raíz del proyecto 00:13:07
y así no tenéis que ponerle ruta ni nada. 00:13:08
Si lo ponéis en otro sitio, habría que ponerle 00:13:11
ruta. O si lo ponéis en 00:13:13
resursos, hay que tener cuidado con sacarlo 00:13:15
de otra manera. Así que, 00:13:17
porque el File Output Stream no va por 00:13:19
módulos. 00:13:21
No, 00:13:24
porque, no, 00:13:25
Porque este lo saca así 00:13:27
El loader 00:13:29
Pero el file input string 00:13:30
File input string, file reader, file writer 00:13:32
Va por otro lado, va por el java normal 00:13:34
Entonces 00:13:37
Podrías ponerlo en resources también 00:13:37
Pero luego tienes que ponerlo en toda la ruta 00:13:40
RSRC, main java, resources, no pasa nada 00:13:41
¿Vale? 00:13:44
Venga, no, de hecho vamos a ponerlo en resources 00:13:45
Vamos a dejarlo organizado, ponemos la ruta y ya está 00:13:47
Y si no lo sacamos con el resource 00:13:49
Es que no quiero volver a loco con eso, pero bueno 00:13:51
A ver, vamos a poner aquí el fichero 00:13:53
Nuestro fichero de datos 00:13:55
Aquí, en recursos 00:13:57
Realmente es su sitio 00:13:58
Venga, nuevo fichero 00:14:01
Y si queréis crear un 00:14:02
Fxml vacío y luego 00:14:05
Abrirlo con el open with 00:14:07
Steam builder 00:14:09
Ya de paso 00:14:10
Vale, datos 00:14:12
Datos 00:14:14
Países, este va a ser 00:14:16
Mi fichero 00:14:19
Datos países punto 00:14:19
Txt, venga 00:14:23
Datos países está aquí 00:14:27
Y ahora, pues venga 00:14:29
A ver 00:14:31
Vamos a pedirle a este 00:14:32
Un listado 00:14:35
Un listado de 00:14:38
A ver, para que el combo box no sea eterno 00:14:53
Le vamos a poner 10, porque si no habría que paginarlo 00:14:57
Que se puede paginar 00:15:00
Pero bueno, vamos a poner un 10 00:15:01
10 países 00:15:03
Con sus habitantes 00:15:04
Con el formato 00:15:08
Nombre 00:15:11
País 00:15:15
Punto y coma 00:15:16
Número habitantes 00:15:18
Uno en cada línea 00:15:21
Habitantes reales 00:15:29
Que no se los inventé 00:15:35
Venga, dale 00:15:36
Jolín, mira que le he dicho uno en cada línea 00:15:41
Pónmelos 00:15:56
Separados 00:16:06
Por 00:16:08
Mira, ha salido Etiopía y Nigeria 00:16:08
Toma ya 00:16:11
No me lo puedo creer 00:16:12
Con la cantidad de países que hay en el mundo 00:16:14
No, es que me he oído hablar antes 00:16:15
Te lo digo en serio 00:16:20
Vale 00:16:22
Ah, vale 00:16:23
Bueno, hala, le voy a poner el salto de línea a yo 00:16:26
Y a tomar por saco 00:16:30
Porque si se me pone tonto 00:16:31
Me voy a tirar más tiempo con esto 00:16:34
Que escribiéndolo o llamándolo 00:16:37
Bueno, es que no sé a qué he entrado 00:16:43
Venga, da igual 00:16:57
Es que he preguntado mal 00:16:59
Lo he hecho mal 00:17:05
Vale 00:17:06
China 00:17:07
Estados Unidos 00:17:23
Indonesia 00:17:25
Pakistán 00:17:26
Nigeria 00:17:28
Brasil 00:17:30
Bangladesh 00:17:32
Rusia y Etiopía 00:17:33
Vale, aquí los tenemos 00:17:36
A ver, este, pero como el fichero 00:17:38
Lo tenemos que leer 00:17:41
Y tenemos que entender los numeritos 00:17:42
Estas comas fuera 00:17:45
Madre mía, esto va a caber en un long 00:17:46
¿Qué? 00:17:51
Sí, sí, sí 00:17:56
A ver, los puntos 00:17:57
¿Aquí te han salido con puntos? 00:17:58
Eso no haría falta porque lo va a entender 00:18:01
El parsedable 00:18:02
Si es una coma 00:18:04
O sea, si es un punto de cifra decimal 00:18:06
Pero 00:18:08
Más bonito 00:18:10
Como lo vamos a leer como entero 00:18:11
Lo vais a leer como entero 00:18:13
Vale, pues esos son los habitantes 00:18:14
Este es el fichero de datos 00:18:17
Vale, pues entonces 00:18:21
Ahora 00:18:23
¿Qué es lo que tenéis que hacer vosotros? 00:18:24
Buscar, ahora ya construir la interfaz 00:18:28
El elemento 00:18:32
Tendréis que buscar primero 00:18:35
un elemento que sea capaz de mostrar en un desplegable 00:18:37
una lista de datos 00:18:40
si buscáis por ahí 00:18:41
pues veréis que el habitual es el combo box 00:18:44
¿vale? lo buscáis 00:18:46
lo ponéis y veis un poquito 00:18:47
como funciona, sabréis como funciona 00:18:50
entonces, cuando arranque la aplicación 00:18:51
deberían arrancar ya todos los 00:18:54
países puestos en el combo box 00:18:56
luego eso nos lleva al método 00:18:57
initialize, entonces el método 00:19:00
initialize tendrá que 00:19:01
leer de este fichero 00:19:03
sacar los nombres 00:19:05
de los países y ponerlos 00:19:07
en el combo box, todo eso lo tiene que hacer 00:19:08
inicialmente, vale 00:19:10
y ahora a partir de ahí, el evento 00:19:12
del combo box, que tendrá un evento 00:19:14
tendréis que ver cuál es, si vale el on action 00:19:16
o tiene que ser otro el evento 00:19:18
tendrá que ser, cuando se dé al combo box 00:19:20
tendrá que coger 00:19:22
sobre lo que se haya clicado 00:19:23
irse al fichero 00:19:26
o a la colección 00:19:28
si es que lo habéis guardado todos en una colección 00:19:30
que tendría más sentido guardarlos todos en una colección 00:19:32
al principio, irse a la colección 00:19:34
coger el dato y ponerlo 00:19:36
en una etiqueta 00:19:38
¿vale? venga pues ya está 00:19:39
¿eh? 00:19:43
que me vaya 00:19:47
aquí he copiado y pegado lo de siempre 00:19:48
entonces 00:19:52
países fxml pues lo hacéis con el 00:19:53
steam builder, hacéis el controller que tendrá 00:19:55
solo el initialize 00:19:57
que es el que carga primero los países 00:19:59
en el combo box y el evento 00:20:01
del combo box, que es el que accede al fichero 00:20:03
o a la colección 00:20:06
si los habéis volcado previamente 00:20:07
pues ala, venga 00:20:09
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
1
Fecha:
20 de abril de 2026 - 12:29
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
20′ 15″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
84.24 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid