20260420 JavaFX_Calculadora1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
vale pues este primer ejemplito
00:00:03
lógicamente era muy sencillo porque aquí
00:00:05
es que no teníamos que hacer
00:00:07
ninguna operación
00:00:09
extraña ni hacer nada
00:00:11
entonces no hay más clases que
00:00:12
esta, el controller y se acabó
00:00:15
pero desde el momento en que nuestra
00:00:16
aplicación ya va a hacer un montón de cosas
00:00:19
operar, acceder a no sé qué, leer
00:00:21
un fichero de no sé cuántos
00:00:23
todo eso que se va a hacer en estos
00:00:24
métodos del controller, que se va a hacer
00:00:27
en estos métodos lógicamente porque
00:00:29
todo el back de mi
00:00:31
interfaz va a parar
00:00:33
aquí, todo eso no lo voy a meter ahí
00:00:35
no voy a convertir el controller de repente
00:00:37
en la clase única de mi aplicación que lo tiene
00:00:38
todo, o sea
00:00:41
la lógica de mi aplicación
00:00:43
no debe vivir aquí dentro
00:00:44
ni las propiedades con las que trabaja
00:00:47
si trabaja con un nombre de fichero
00:00:49
si trabaja con no sé qué, o sea no debe
00:00:51
vivir todo aquí dentro mezclado
00:00:53
aquí en este caso es que no hacía nada
00:00:54
trabajar con esta etiqueta
00:00:57
¿Vale? Entonces, desde el momento en que ya
00:00:59
Empezamos a trabajar, la aplicación hace más cosas
00:01:01
Pues ya hay que organizarla de otra manera
00:01:03
El controlador no puede ir engordando y engordando
00:01:05
¿Vale?
00:01:07
Ya tendremos que empezar a crear
00:01:08
Hacer un diseño
00:01:10
Hacer pues las entidades
00:01:13
Con las que trabaja mi aplicación
00:01:15
La clase de gestor de operaciones
00:01:16
Lo que sea, y el control ya irá llamando
00:01:19
A lo que toque, ¿vale?
00:01:21
Entonces, pues
00:01:24
A ver, por ejemplo
00:01:25
Para
00:01:27
Un ejemplito básico
00:01:28
Y luego ya planteamos uno que hagáis vosotros
00:01:32
Que acceda a ficheros
00:01:35
Y así practicáis los ficheros
00:01:36
Pues por ejemplo, sobre este mismo
00:01:38
Que tenía un botón que saludaba
00:01:40
Bueno, este ejemplo lo dejamos así
00:01:42
Y así lo subo así tal cual
00:01:45
Y vamos a hacer otro desde el principio
00:01:46
Que sea una calculadora mínima
00:01:48
¿Vale? Una calculadora mínima
00:01:50
Pero ya tiene que operar
00:01:52
Hacer algunas cosas
00:01:54
Entonces, venga, pues a ver
00:01:55
perdón
00:01:58
R Gómez 4
00:02:02
vale, venga pues vamos a hacer
00:02:06
un proyecto desde el principio
00:02:10
perdón
00:02:11
educa madrid
00:02:13
educa.madrid.org
00:02:16
el mismo que el vuestro
00:02:19
el único correo que podemos usar
00:02:20
sin que nos lleven a la cárcel de la comunidad
00:02:22
de Madrid
00:02:24
tienen una cárcel ahí para la gente que usa
00:02:25
recursos ajenos a la comuna
00:02:29
Duca Madrid
00:02:31
vale, a ver pues venga
00:02:32
nuevo proyecto
00:02:37
vale
00:02:39
para
00:02:41
el próximo día porque
00:02:42
vamos a poner el plugin de Eclipse
00:02:44
pero pasado el examen, para que lo podáis
00:02:49
hacer sin Maven, si a alguien
00:02:51
le gusta más sin Maven
00:02:53
pero por ahora vamos a seguir trabajando
00:02:55
Pues venga, un nuevo proyecto, proyecto sencillito, en mi caso lo añado aquí, venga, mi grupo, pues el dominio, el dominio de mis proyectos, pues el dominio de todas mis aplicaciones, pues es este, perdón, vale, pues luego en el cambio de clase, ala, calculadora mínima, vale, ya está.
00:02:58
Vale, primero, dentro de la lista de ítems, cuidado con la máquina virtual 1.8, no es compatible con la última versión de JavaX, pues lo cambiamos, tanto la máquina virtual con la que vamos a trabajar, como el nivel de compilación que debería ser acorde.
00:03:47
vale
00:04:11
ahora, como es un
00:04:24
proyecto maven
00:04:27
lo primero que abrimos es esto
00:04:28
para configurar el funcionamiento
00:04:30
de la herramienta maven, claro
00:04:33
para quitarle la cosita roja
00:04:35
que podríamos no quitarla y no pasaría nada
00:04:37
pues la S
00:04:39
famosa y ahora
00:04:41
aquí es donde ponemos las librerías de las que
00:04:43
dependemos, los plugins que va a
00:04:45
ejecutar maven si va a ejecutar alguno
00:04:47
etcétera, nuestro caso
00:04:49
son aplicaciones sota, caballo y rey, todas java fx
00:04:51
pues copiamos de otro y ya está
00:04:55
pues copiamos de el último cualquiera que
00:04:58
hayamos hecho, que nos haya funcionado
00:05:03
pues desde el escritorio hacia abajo, las propiedades, las dependencias
00:05:06
y el plugin, vale
00:05:12
guardamos y automáticamente ya
00:05:20
se habrá abierto
00:05:25
la carpetita de
00:05:26
maven dependencia
00:05:29
si es que está ahí
00:05:31
vale, pues ya podemos empezar a hacer la aplicación
00:05:31
pues venga
00:05:37
me hago mi paquete con mi aplicación
00:05:39
es .dam
00:05:49
1.app por ejemplo
00:05:50
este tiene mi main
00:05:53
y ya sabemos que la clase raíz de JavaX hereda extends de application
00:06:12
y al heredar de application pues tiene que implementar este método
00:06:26
y este método es el que construye la vista, asocia los eventos, todo eso
00:06:42
Si lo hacemos con fxml
00:06:46
Pues podemos copiar y pegar
00:06:48
Directamente estas primeras líneas
00:06:50
Todo esto podemos si queremos
00:06:53
Copiamos y pegamos esto
00:06:54
Vale
00:06:58
Aquí yo le cambio el nombrecito
00:07:02
Y
00:07:05
Lógicamente no podemos
00:07:07
Y el main pues es el que tiene
00:07:09
El que lanza la aplicación
00:07:11
Vale
00:07:14
Y aquí no puedo ejecutar esto
00:07:19
Bueno vamos a cambiar el título
00:07:21
Por calculadora
00:07:23
Y aquí no puedo ejecutar la aplicación
00:07:25
Porque lógicamente me falta
00:07:32
El fichero de vista que no he generado
00:07:34
¿Vale? Entonces ya que estamos
00:07:36
Ahora mismo en Eclipse, antes de irnos al Steam Builder
00:07:40
Vamos a hacernos el controlador
00:07:42
Por ahora vacío
00:07:44
Venga
00:07:45
Un pelincito
00:07:46
¿Qué?
00:07:50
¿Qué es lo que nos pregunta?
00:07:51
Dime
00:07:52
¿Que salió a punto de que se viene?
00:07:53
¿Dónde lo va a poner?
00:07:55
contéstate tú a ti mismo
00:07:55
recordando del viernes pasado
00:08:00
claro, no, o sea
00:08:02
lo puedo meter en cualquier sitio
00:08:03
pero entonces tengo que poner aquí la ruta
00:08:05
a la que llegue, entonces como la carpeta
00:08:07
resources está directamente
00:08:10
en el pad de maven
00:08:12
pues la pongo aquí, si la pongo
00:08:13
en recursos, puedo poner la ruta de esta manera
00:08:16
y ya está, con la barrita delante
00:08:18
a mí me va sin poner
00:08:20
la ruta
00:08:22
claro, si tú lo pones
00:08:25
directamente donde está el código fuente
00:08:28
como eso también está en el pad
00:08:30
también te iría, le quitas la barrita y ya está
00:08:32
lo único es que
00:08:34
a ver, la clave es
00:08:35
lo tienes que poner
00:08:38
en un fichero, perdón, en una
00:08:40
ruta que esté en el pad
00:08:42
y si no está en el pad, accesible desde el pad
00:08:44
y poniéndola aquí, ya está
00:08:47
no es que haya lo que pase
00:08:48
si encaja la ruta que tú le has puesto
00:08:49
encaja con la que pones aquí, no hay ningún problema
00:08:52
Ni yo tampoco
00:08:54
¿A qué te refieres con que yo no lo he puesto?
00:09:00
Vale, y luego has puesto
00:09:05
El nombre del fichero aquí
00:09:06
Y yo también, pero claro porque
00:09:08
Resources está metido en el PAD
00:09:10
El PAD es
00:09:12
El conjunto de rutas
00:09:16
Que son accesibles directamente
00:09:18
Vale, entonces no hace falta
00:09:20
No, tiene
00:09:22
Tienes que poner la barrita, eso sí.
00:09:24
La barrita hay que ponerla.
00:09:26
Claro, eso sí, ¿vale?
00:09:27
Vale, sí, es como lo hicimos el otro día.
00:09:30
Vale, entonces, bueno, a esta la voy a cambiar ya de nombre
00:09:32
porque no la voy a llamar saluda.
00:09:34
Cuando la generemos la vamos a llamar, pues, calculadora.
00:09:35
Por ejemplo, calculadora FXML.
00:09:40
La vamos a llamar, ¿vale?
00:09:43
Y, a ver, ya que estamos en Eclipse,
00:09:48
vamos a adelantarnos y vamos a hacer el control, ¿eh?
00:09:51
Vean lo que estábamos, ¿vale?
00:09:54
pues venga
00:09:55
nos hacemos
00:09:57
el paquete con el controller
00:09:58
es .damp1.controller
00:10:01
y ahora aquí vamos a poner
00:10:06
nuestro controlador
00:10:09
vale pues el controlador tendrá
00:10:10
pondremos en él
00:10:22
los controles
00:10:24
los elementos de la vista
00:10:26
los que vaya a acceder
00:10:28
y luego los métodos
00:10:29
con los que vamos a responder
00:10:31
a los eventos
00:10:33
el controller
00:10:34
le podemos poner opcionalmente
00:10:36
un método
00:10:39
inicialice
00:10:40
no sé si lo he escrito bien
00:10:41
a ver si lo he escrito
00:10:47
bien
00:10:52
ah sí, pero tienes razón
00:11:09
vale, vale, sí, sí, sí
00:11:10
sí, no puedo comprobar
00:11:12
pero yo creo que se llama así
00:11:15
vale, entonces, este método
00:11:16
lo puedo poner o no, no es obligatorio
00:11:18
vale, este método
00:11:20
se ejecuta, si está puesto
00:11:22
lo que hay dentro, se ejecuta
00:11:24
conforme se carga
00:11:27
la vista
00:11:29
entonces, por ejemplo, si yo estoy haciendo una aplicación
00:11:29
en la cual me haya puesto unos desplegables
00:11:32
que quiero que aparezcan
00:11:35
para elegir ciudades, las ciudades las tengo
00:11:36
en un fichero, por ejemplo, pues mira
00:11:38
eso lo puedes hacer luego, entonces en un fichero
00:11:40
de texto tienes nombre, y tú quieres que cuando arranque la aplicación
00:11:42
te aparezca en un desplegable
00:11:45
las ciudades que tienes para seleccionarlas
00:11:47
y que te muestre los habitantes de cada ciudad
00:11:49
lo que sea
00:11:51
algo así luego cuando hagamos este ejemplito
00:11:52
lo planteamos así
00:11:55
el evento del desplegable ese
00:11:57
será acceder al fichero
00:11:59
para mirar en la línea de la ciudad
00:12:01
los habitantes que tiene, etc.
00:12:03
y habrá que hacer un initialize
00:12:05
para que cuando arranque la aplicación
00:12:06
se carguen en ese desplegable
00:12:09
los nombres de las ciudades que hay en el fichero
00:12:10
entonces en nuestro caso
00:12:12
para asegurarnos de que funciona
00:12:14
le voy a poner aquí simplemente
00:12:16
una especie de consola
00:12:17
arrancando aplicación
00:12:20
para ver si en la consola
00:12:22
nos aparece que esté arrancando la aplicación
00:12:24
vale
00:12:26
vale, pues entonces, dime
00:12:27
si, pero bueno
00:12:30
puedes no, o sea, se va a ejecutar
00:12:43
aunque no implementes inicializable
00:12:45
¿Vale? O sea, no es obligatorio, simplemente es inicializable
00:12:47
Creo recordar, si no, ahora lo comprobamos
00:12:50
¿Vale? Si no, ¿vale?
00:12:52
Vale
00:13:00
A ver
00:13:00
Ahora ya sí que sí, nos vamos al
00:13:01
Steam Builder
00:13:04
Sí
00:13:05
Venga, pues a ver
00:13:12
Aquí
00:13:24
El que uno quiera
00:13:26
Se supone
00:13:29
Que los que ya tienen una distribución
00:13:31
fijada, pues se asocian
00:13:33
a los aspectos habituales de las aplicaciones
00:13:35
que vemos, responden a lo que normalmente
00:13:37
las aplicaciones al final acaban, las interfaces
00:13:39
acaban respondiendo a sota, caballo y rey
00:13:41
pues un menú a la izquierda
00:13:43
con las cositas, luego a la derecha
00:13:46
casi todas acaban siendo iguales
00:13:47
pues los paneles de la izquierda
00:13:49
responden a los aspectos típicos
00:13:51
de las interfaces, entonces pues uno puede seleccionar
00:13:53
uno, pero claro, si seleccionáis uno
00:13:55
que no sea el de ancla
00:13:57
entonces hay que colocar los elementos
00:13:58
respetando esa distribución
00:14:01
a la que te obliga ese panel
00:14:03
vale, ahí a vosotros podéis
00:14:04
probar y lo que sea, pues este es el
00:14:07
típico de rejilla
00:14:09
este es el típico que tiene pues la zona
00:14:10
de ítems aquí, la zona
00:14:13
abajo de no sé qué, pero bueno
00:14:15
vamos a ponerle, yo le voy a
00:14:17
poner este para hacer una calculadora, poner los botones
00:14:19
donde nos dé la gana, vale
00:14:21
que feo el que
00:14:28
vamos a ver, porque sea blanco
00:14:31
es feo, tiene que tener cositas
00:14:37
Venga, pues a ver
00:14:38
La calculadora va a tener
00:14:43
Un área de texto
00:14:45
Para los datos
00:14:46
Pues sale, esto ya es un control
00:14:47
Un text fill
00:14:50
Entonces para meter datos en un área de texto
00:14:52
Pues uno cotillea
00:14:55
Busca y al final deduce
00:14:57
Que el elemento que mejor va a pegar
00:14:58
Es el
00:15:00
Pues buscad como os dé la gana
00:15:01
¿Vale?
00:15:06
Venga, pues ahí tenemos nuestro textfield, nos suena por el nombre a que es para meter datos en área de texto.
00:15:16
Vale, ahora botoncitos.
00:15:23
¿Cómo?
00:15:34
¿Qué era lo de arriba?
00:15:37
Un textfield, un campo de texto para meter datos, números, lo que sea.
00:15:41
entonces vamos a hacer una calculadora
00:15:46
sencillísima
00:15:48
con
00:15:50
la operación sumar
00:15:52
entonces
00:15:55
bueno antes que nada el text fill
00:15:55
el text fill va a necesitar ser accesible
00:15:58
desde java por supuesto porque tengo
00:16:01
que recoger de él el dato que
00:16:03
haya escrito el usuario vamos a ponerle un
00:16:05
nombrecito pues lo seleccionamos
00:16:06
en botón derecho en código
00:16:09
le ponemos el nombrecito
00:16:11
Pues dato
00:16:14
O como lo queramos llamar
00:16:16
Esa variable java
00:16:18
De textfield se va a llamar dato
00:16:21
Estos tres botones van a ser solo
00:16:22
Para recoger el evento
00:16:26
Pues sumar, restar
00:16:27
E igual
00:16:30
Pues entonces no les vamos a dar nombre
00:16:32
Porque no lo tenemos que hacer desde java
00:16:34
Pero a este si que le vamos a poner
00:16:36
En propiedades
00:16:38
Más
00:16:39
Este va a ser más
00:16:42
al text field lo he llamado dato
00:16:43
pero bueno, llámalo tú como quieras
00:16:46
a este botón
00:16:48
vamos a hacer una versión rapidísima y corta
00:16:49
de calculadora para que luego ya podáis
00:16:52
vosotros trabajar
00:16:53
y a este igual
00:16:56
vale
00:16:59
a ver, el texto más
00:17:01
lo vamos a ponerlo
00:17:12
un poco más grande porque si no no se ve nada
00:17:14
así
00:17:16
para mí, pues
00:17:20
Ala, la mía se queda así
00:17:21
Vosotros como sois más
00:17:35
De perder el tiempo
00:17:36
La dejáis más bonito
00:17:40
Si queréis
00:17:42
Vale, pues entonces
00:17:44
Va a haber la respuesta a más
00:17:46
La respuesta a menos
00:17:49
Y la respuesta a igual
00:17:50
Y vamos a tener que indicar
00:17:51
El controller que tiene los métodos
00:17:55
De esas respuestas
00:17:57
Pues venga, el controller lo poníamos aquí
00:17:58
Aquí abajo
00:18:00
Controller
00:18:03
Mi clase controller es
00:18:05
.da1.controller.controller
00:18:06
Creo recordar
00:18:15
Vale
00:18:16
Yo creo que está todo lo necesario
00:18:19
Para hacer el
00:18:21
El fxid
00:18:22
El fxml
00:18:25
Vale
00:18:27
Save as
00:18:30
A ver
00:18:34
Sí
00:18:35
Tú lo abres con la
00:18:49
Desde el Eclipse lo puedes abrir con la aplicación que quieras
00:18:56
Lógicamente si lo abres con esa
00:18:58
A ver
00:19:00
Tengo los usuarios.
00:19:03
Vale.
00:19:22
¿Dónde lo tengo?
00:19:36
Ah, aquí está.
00:19:50
Vale.
00:19:52
Vale, pues entonces yo ya lo tengo aquí.
00:19:52
calculadora.fxml vale vamos a refrescar vale y aquí está el controller
00:19:59
bueno pues ya está entonces ahora ya puede empezar a hacer el controller vale aquí
00:20:27
si no pongo
00:20:38
el fxml no va a ser
00:20:41
el initialize del fxml
00:20:42
vale, aquí se me ha olvidado anotarlo
00:20:44
tiene que ser el initialize de java x
00:20:46
vale, que
00:20:48
yo creo que si que va a haber que implementar la interfaz
00:20:50
pero ya lo comprobamos
00:20:52
vale
00:20:53
vale, pues entonces, ahora ya empezamos
00:20:55
a trabajar, ahora ya
00:20:58
la vista ya está completa, ahora hay que empezar
00:21:00
y actuar, pues venga
00:21:02
respuesta al botón
00:21:04
más, respuesta al botón
00:21:06
más
00:21:08
hemos hecho tres botones
00:21:08
vale, pues como va a funcionar nuestra
00:21:19
calculadora, cuando le
00:21:34
demos a sumar, todavía
00:21:36
no pasa nada
00:21:38
pero que tiene que pasar
00:21:40
pues que el dato que hay ahí
00:21:41
tendremos que leerlo, con lo cual
00:21:44
el controlador automáticamente va a necesitar
00:21:46
acceder a este, para leer el dato
00:21:48
vale, pues entonces primera cosa que le podemos
00:21:50
para el controlador, oye tú
00:21:52
controlador voy a necesitar acceder a este
00:21:53
al text
00:21:56
field, dato
00:21:58
¿vale? entonces
00:22:03
¿qué tendremos que hacer cuando demos al botón suma?
00:22:11
pues de dato
00:22:13
leer lo que haya, el numerito que haya
00:22:14
que si
00:22:16
exploramos los métodos suena a que
00:22:19
es getText el que me lo da
00:22:21
pero como me lo dará en string ya sabemos
00:22:22
convertir un string
00:22:25
a entero
00:22:27
así funciona calculador
00:22:27
tú solo tienes una pantalla, entonces
00:22:36
vamos a ir, claro
00:22:38
entonces, ¿qué vamos a hacer
00:22:40
cuando le demos al botón suma?
00:22:42
pues cuando le damos al botón suma, lo único
00:22:44
que podemos hacer en ese momento es
00:22:46
coger ese dato y
00:22:48
guardarlo en algún lado porque va a ser el
00:22:50
primero operando, pero todavía
00:22:52
nada más, es decir, la respuesta al botón
00:22:54
suma será, porque tú haces
00:22:57
3 más 2
00:22:58
igual, entonces
00:23:00
cuando le das al más, lo
00:23:02
único que tienes que hacer es el dato que haya
00:23:04
quedártelo ahí guardado
00:23:07
como primer operando y ya está
00:23:09
todavía no operarás, operarás
00:23:11
cuando le des al igual, entonces
00:23:12
aquí ya nos surge la primera duda es
00:23:14
a ver, este dato que yo cojo aquí
00:23:16
operando
00:23:18
uno
00:23:21
lo tengo que guardar en algún
00:23:21
lado, en algún lado se tiene que quedar ahí guardado
00:23:24
sin perderse, para que cuando
00:23:26
luego nos vayamos al evento
00:23:28
de botón
00:23:30
de botón igual
00:23:31
para que cuando luego nos vayamos al evento
00:23:34
de botón igual
00:23:45
ahora ya
00:23:46
desde botón igual
00:23:50
habrá que hacer una suma con
00:23:52
el operando que hay en ese momento
00:23:54
más este otro que hemos cogido
00:23:56
previamente, luego aquí se nos
00:23:58
presenta ya un primer problema
00:24:00
pequeñito, pero un primer problema de diseño
00:24:02
que es, este dato que he leído
00:24:04
aquí en botón suma
00:24:06
¿cómo me las apaño para que se quede guardado
00:24:07
en algún sitio y que no se
00:24:10
pierda, porque luego lo tiene que usar
00:24:12
este método botón igual, cuando yo
00:24:14
de a botón igual, como me las apaño
00:24:16
que es la primera opción que nos sale
00:24:17
claro, la solución
00:24:20
natural que nos sale es
00:24:33
variable de la clase
00:24:34
operando uno
00:24:36
entonces
00:24:38
esta es la solución natural, verdad
00:24:39
operando uno
00:24:42
la primera que nos sale
00:24:44
Pero claro, aquí ya estamos empezando a meterle basurilla al controller, estamos empezando a convertir al controller en algo que no es. Operando uno es una característica del objeto, entre comillas, del objeto cálculo, del calculador, del que sea.
00:24:48
¿Vale? Entonces ya estamos
00:25:06
Dándole al controller
00:25:08
Propiedades
00:25:10
Que no lo caracterizan por diseño
00:25:11
Al controller lo caracterizan
00:25:14
Si los controles
00:25:16
A los que accede la interfaz
00:25:18
Los controles sí, lo que usa
00:25:20
Pero si ya le empezamos a meter basura
00:25:22
Estamos mezclando toda la lógica
00:25:24
De la aplicación, con todas las entidades
00:25:26
Con todo el modelo, con todo
00:25:28
¿Vale? Pero como aquí son
00:25:30
Dos propiedades, vamos a
00:25:32
ponerlo aquí y luego ya lo sacamos
00:25:34
fuera, es solamente como pautas
00:25:36
de diseño que os doy, vamos a suponer que lo sacamos
00:25:38
aquí, pues la solución
00:25:40
una solución tenemos, que es sacarlo aquí
00:25:42
pero repito, estamos
00:25:44
manchándole a este, porque le estamos
00:25:46
empezando a caracterizar con
00:25:48
cosas que en realidad no le caracterizan, al control
00:25:50
lo caracteriza operando uno, operando uno
00:25:52
será en todo caso una característica de una
00:25:54
entidad que yo debería haber diseñado
00:25:56
previamente, antes de empezar a programar
00:25:58
que es la entidad calculadora
00:26:00
pero bueno, venga
00:26:02
operando uno, ahora el botón igual
00:26:04
el botón igual que tiene que hacer
00:26:06
pues cogerse lo que hay en ese
00:26:08
momento en
00:26:10
el área de texto
00:26:12
vamos a
00:26:14
después de darle a sumar vamos a poner el área de
00:26:22
el área de texto a
00:26:25
cero, vacía
00:26:27
para que el usuario no tenga que borrarlo
00:26:28
para meter el segundo operando
00:26:31
entonces el área de texto como se llama
00:26:32
dato
00:26:35
dato no si tiene un clear, ponerle un
00:26:35
set test a
00:26:39
sí, tiene un clear
00:26:40
vale, y ahora
00:26:42
en botón igual, vamos a coger
00:26:45
ahora ya vamos a fijar
00:26:47
el área de texto
00:26:49
en dato.sectest
00:26:50
que le vamos a poner
00:26:54
el operando 1 más
00:26:55
lo que haya
00:27:00
en ese momento en el área de texto
00:27:01
que será esto otra vez
00:27:03
vale
00:27:06
el operando 1
00:27:12
sumado a lo que haya en el área
00:27:14
de texto y convertido a string
00:27:17
claro, convertirlo a string es tan fácil
00:27:19
como concatenarlo con esto
00:27:21
entonces no haría nada la interfaz
00:27:22
porque no tengo el evento botón menos
00:27:31
ahora tengo que asociar cada
00:27:33
ahora tengo que asociar cada
00:27:35
método al botón
00:27:37
bueno
00:27:40
bueno
00:27:40
el onclick de
00:27:43
no, todavía no está puesto ninguno
00:27:47
los tenemos que poner, vale
00:27:50
los tenemos que asociar, vale
00:27:51
entonces, donde estamos
00:27:54
aquí
00:27:55
entonces, esta va a ser la respuesta a botón
00:27:56
suma, que es coger el dato y
00:28:00
ponerlo aquí, y esta va a ser
00:28:02
la respuesta a botón igual, que es
00:28:04
al dato que teníamos de antes
00:28:06
le sumamos
00:28:08
el dato nuevo que está en la interfaz
00:28:10
y lo ponemos en la
00:28:12
en el área de texto
00:28:14
entonces lo he convertido a string con esto
00:28:15
cuidado lógicamente si ponéis
00:28:18
ese espacio
00:28:20
en medio la suma se perdería
00:28:22
porque esto se va diciendo
00:28:24
de izquierda a derecha
00:28:26
al tener un entero más un entero
00:28:27
esto interpreta suma entera
00:28:29
suma correcta y luego ya lo podemos convertir
00:28:31
a string concatenando con esto
00:28:34
o como string value of o como os dé la gana
00:28:36
vale
00:28:38
bueno pues ahora lo único que nos falta
00:28:39
es decirle a esta
00:28:42
A la interfaz
00:28:44
Que el onAction de más es botón suma
00:28:46
Y el onAction de igual
00:28:49
Es botón igual
00:28:50
De hecho es que no tendríamos ni que hacerlo aquí
00:28:52
Es que nos vamos aquí al fxml
00:28:56
Que a veces que parecemos tontos
00:28:58
Le ponemos el onAction y se acabó
00:28:59
A ver donde tengo el
00:29:02
Botón suma es este primero
00:29:12
Text suma
00:29:15
Y le voy a poner un
00:29:16
onAction
00:29:18
igual
00:29:20
uff, que he hecho
00:29:23
un onAction
00:29:25
igual
00:29:27
almohadilla
00:29:29
botón suma, creo que se llamaba
00:29:32
el método
00:29:35
no he dicho que sea mejor
00:29:36
he dicho que no tenemos por qué tocarlo
00:29:47
porque nos lo genera todo
00:29:49
pero, a ver, lo que tenemos es
00:29:50
también que intentar no volvernos tontos
00:29:53
entonces ya sabemos que ponerle un evento es
00:29:55
añadirle el componente
00:29:57
onAction
00:29:59
¿verdad? entonces
00:30:00
si miro yo en mi otro vista para
00:30:03
button
00:30:05
onAction
00:30:07
esto mismo ¿no?
00:30:09
onAction saluda
00:30:12
pues ya está, lo pongo a mano y ya está
00:30:13
es que irme al Steam Builder
00:30:15
solamente para eso
00:30:17
espera un momento que lo escriba bien
00:30:18
porque no lo tengo bien escrito
00:30:21
Me falta esta comilla de aquí
00:30:23
Vale
00:30:25
Ahora ya lo tengo
00:30:27
El on action
00:30:29
Botón suma, un segundito
00:30:30
Y voy a ponerle el on action de
00:30:32
Del
00:30:34
Del botón igual
00:30:37
Que es este
00:30:41
Botón igual
00:30:43
Y eso sí
00:30:45
Me falta también el controller
00:30:51
En el fxml el controller
00:30:54
Lo puedo poner en el Steam Builder
00:30:56
O añadirlo yo directamente a mano
00:30:58
Porque tampoco somos tan tontos
00:31:02
No lo sé, ahora voy a mirar
00:31:04
Aquí me falta esto
00:31:14
Me falta eso
00:31:16
Porque el botón
00:31:18
Ah, sí, sí tiene etiqueta de cierre
00:31:19
Entonces eso va ahí
00:31:20
Y entonces aquí también me sobra esta
00:31:22
Vale, porque tiene etiqueta de cierre
00:31:25
El botón, ¿no?
00:31:27
Sí
00:31:28
Y
00:31:29
Que me sobra un
00:31:30
En el button
00:31:33
Ah, este, este, vale
00:31:35
Vale
00:31:38
Pero me falta ponerle el controller
00:31:41
Vale
00:31:44
Que lo puedo poner en el Steam Builder
00:31:46
Pero es que ya hemos comprobado antes que el Steam Builder
00:31:48
Lo único que hace es añadirme esta línea
00:31:50
Ah, bueno, que no, ya se lo puse
00:31:51
Ya se lo puse en la vista
00:31:54
La tengo aquí
00:31:55
Lo tengo aquí, ya se lo puse en la vista
00:31:57
Vale, pues entonces la vista tiene el controller que estoy usando, el onAction del botón suma y el onAction del botón igual y esos están aquí anotados con su fxml, botón suma, botón igual, el initialize que está por ver que funcione si no implementa initializable, pero eso ahora lo comprobamos.
00:32:01
Y yo creo que está todo
00:32:28
¿Vale? Creo que está todo
00:32:30
Y si no lo está, pues ahora habrá que arreglarlo
00:32:33
Venga
00:32:35
Ahora
00:32:37
Esto no lo ejecutamos
00:32:39
Como aplicación de Java, como bien sabéis
00:32:42
Si no
00:32:44
A quien llamamos es a Maven
00:32:45
Le decimos, oye tú Maven, lánzate
00:32:47
Ya, y Maven te dice
00:32:49
Sí, ya, pero ¿qué hago?
00:32:51
Porque puedo hacer muchas cosas
00:32:53
Pues oye, ejecuta el plugin de JavaFX
00:32:54
Que te he configurado en el POM
00:32:57
Y ese plugin de JavaFX
00:32:58
Que te he configurado en el POM
00:33:01
En particular hace el RUN
00:33:02
Que es ejecutar
00:33:05
Vamos a ver si tenemos suerte
00:33:06
Vale, no tenemos suerte
00:33:08
Ah, porque no he cambiado
00:33:14
En el POM la clase
00:33:18
¿Vale? Acordaos de esto
00:33:19
La clase del plugin
00:33:21
¿Vale? La clase del plugin
00:33:23
Se llama calculadora
00:33:26
¿Cómo la sabía?
00:33:27
Porque me lo ha dicho
00:33:29
No puedo encontrar
00:33:30
App primera ventana
00:33:34
Ver la traza de error es básico
00:33:36
Si no, no tienes de dónde partir
00:33:38
Vale, entonces
00:33:40
Por ahora es ese error, vamos a ver si hay otro
00:33:42
Calculadora
00:33:44
Calculadora
00:33:45
Calculadora, vale
00:33:47
Siguiente intento
00:33:50
Calculadora
00:33:52
Vale, a ver, otro fallo
00:33:57
No puedo encontrar
00:34:04
Ah, es que has dado otra vez
00:34:11
Es que no se llama calculadora
00:34:13
Ah, es que se llama app, jolín, parezco tonta
00:34:14
Vale, vale
00:34:17
Se llama app
00:34:18
Entonces
00:34:20
App
00:34:21
Siguiente intento
00:34:23
Vale, efectivamente no hace falta
00:34:40
Que implemente initialize
00:34:42
¿Vale? Es que yo recordaba
00:34:43
Que yo nunca lo había implementado
00:34:46
Pero vamos, puede que para otras cosas
00:34:47
Si haga falta, eso ya no lo sé
00:34:49
¿Vale?
00:34:51
No, que no hace, no, no, no
00:34:53
Que para que JavaFX
00:34:54
Interprete este método
00:34:57
Como el método que tiene que arrancar
00:34:59
Cuando se monta la aplicación
00:35:01
Solo es necesario que se anote con fxml
00:35:02
No hace falta que haga
00:35:05
Aquí un implement de algo
00:35:07
Que era la duda que tenía Jesús
00:35:08
¿Vale? Entonces
00:35:11
Mi calculadora es esta
00:35:12
Vamos a ver
00:35:15
Uy, teníamos que haberlo fijado en la izquierda
00:35:15
A la derecha, porque la izquierda queda muy feo
00:35:19
Mi código, ¿dónde?
00:35:20
¿Qué parte?
00:35:25
No, solamente para comprobar
00:35:27
Que este método se ejecuta al arrancar
00:35:34
Que lo habéis anotado, ¿verdad?
00:35:36
No se os ha olvidado
00:35:41
Y no se os ejecuta
00:35:41
Arrancando aplicación
00:35:45
Ahora lo miramos
00:35:47
Voy a ver yo si el código que hemos hecho tiene sentido
00:35:48
236 más
00:35:51
¿Veis? Me lo deja limpio, que es muy bonito
00:35:52
123
00:35:54
Igual a 159
00:35:56
¿Vale? Muy bonita
00:35:58
2,59 más 12
00:35:59
Igual a 371
00:36:02
¿Vale?
00:36:04
Pues muy bien
00:36:06
¿Os salen cosas raras?
00:36:07
¿Problemas? ¿Errores?
00:36:11
¿Cómo que todito?
00:36:13
No puede ser
00:36:14
A ver, vamos a
00:36:15
- 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:
- 2
- Fecha:
- 20 de abril de 2026 - 12:28
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 36′ 21″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 158.94 MBytes