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.

18 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:
18
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