Saltar navegación

20260505 EJER6_JAVAFX_2 - 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 5 de mayo de 2026 por Raquel G.

2 visualizaciones

Descargar la transcripción

Vale, pues entonces, pues ahora ya una vez que hemos visto que esto, EventHandler, es una interfaz funcional, pues ¿para qué vamos a hacer la clase con todo este rollo? 00:00:00
hacer aquí el new 00:00:21
vamos a, en lugar de pasarle 00:00:22
el objeto de esta manera 00:00:26
vamos a pasárselo de la otra manera 00:00:27
que sabemos instanciar 00:00:30
objetos de interfaces funcionales 00:00:31
que de hecho 00:00:34
cuando uno va 00:00:42
mirando los métodos es que la propia ayuda 00:00:44
te lo dice 00:00:46
cuando tú 00:00:49
coges este método 00:00:55
cuando te aparece esto 00:00:56
pues tú aquí ya estás viendo, te dice que esto es una 00:00:58
interfaz funcional, entonces tú ya puedes 00:01:00
deducir dónde puedes meter la ANDA, 00:01:02
dónde puedes no meterla, etc. 00:01:04
Vale, pues entonces, a ver. 00:01:07
Se hace gracia todo hoy. 00:01:17
Ruth, vale. 00:01:21
Pues a ver. 00:01:23
Aquí hay que poner una ANDA 00:01:25
acorde en sintaxis 00:01:26
a la interfaz funcional que tenemos que implementar, 00:01:30
que es Iben Handler. Entonces, Iben Handler, 00:01:32
su método abstracto, 00:01:35
tiene un 00:01:37
parámetro de entrada. Pues es lo que hay que 00:01:38
poner en la lambda, las lambdas 00:01:40
pueden no tener parámetros, tener uno o tener 00:01:42
mil, tenemos que poner el que encaje 00:01:44
con la interfaz funcional 00:01:46
que hay que implementar aquí 00:01:48
aquí hay que implementar una interfaz funcional de tipo 00:01:50
event handler, pues entonces tenemos 00:01:52
que saber el método abstracto 00:01:54
de event handler, que es el handle 00:01:57
¿qué estructura tiene? 00:01:58
pues la estructura que tiene 00:02:01
es que tiene que recibir un 00:02:02
parámetro, pues venga 00:02:04
ala, es este 00:02:06
el e 00:02:08
y ahora 00:02:10
el código 00:02:12
de la implementación 00:02:15
del método lo pongo aquí 00:02:18
este es el event 00:02:20
lo he llamado a propósito 00:02:22
para que no penséis que tiene que llamar event a propósito 00:02:24
o sea, tiene que llamar como se llama x 00:02:26
como se llama no sé qué, esto representa 00:02:27
el parámetro de entrada del método abstracto 00:02:29
aquí se llama event 00:02:32
pero da igual 00:02:34
lo puedo llamar aquí h y poner aquí h y aquí h 00:02:35
eso es de programación de la primera semana 00:02:38
Vale, pues Milanda 00:02:40
Recibe un parámetro de entrada 00:02:42
Y aquí pongo la implementación del método 00:02:44
Que es esta 00:02:47
Pues ala 00:02:49
Venga, esto mismo 00:02:51
Esto mismo, esta es la implementación de mi método 00:02:52
Pues la puedo plantar 00:02:55
Aquí tan feliz 00:02:57
Lógicamente event, ala no es event 00:02:58
Es e 00:03:05
Porque lo he llamado e a propósito para que no nos aprendamos 00:03:05
Las cosas de memoria 00:03:09
Ala 00:03:10
Pues ya la tengo 00:03:12
ya tengo una instancia 00:03:13
esto es haber hecho un new 00:03:18
de un objeto que implementa el event handler 00:03:19
siendo su implementación 00:03:22
del método 00:03:24
handle este 00:03:25
con la ventaja que me he encontrado 00:03:27
añadida, la maravillosa ventaja 00:03:29
de que al haberlo declarado 00:03:32
aquí dentro, el label es visible 00:03:34
porque está aquí 00:03:36
que esa es la principal ventaja 00:03:36
que el label es visible 00:03:39
¿vale? 00:03:41
y ya está, este código es el que he puesto aquí 00:03:42
tal cual clavado 00:03:48
pues entonces esto 00:03:50
nos funcionará, suponemos 00:03:59
y si, nos funciona 00:04:01
bueno 00:04:08
punto uno hecho 00:04:25
punto dos 00:04:27
otro evento del panel 00:04:29
cuando demos una tecla 00:04:31
entonces tendremos que capturar 00:04:33
un evento del tipo key event 00:04:37
hay que 00:04:39
añadir un botón al panel 00:04:42
donde 00:04:43
en la posición actual en la que 00:04:45
esté el ratón, eso ya es raro 00:04:48
porque el texto del botón 00:04:50
es fácil de sacar, el texto del botón 00:04:52
dice la tecla pulsada 00:04:54
pero la tecla pulsada lo puedo sacar de Keyvent 00:04:55
casi seguro 00:04:58
pero la posición donde esté el ratón 00:04:58
esa de donde la puedo sacar, no lo sé 00:05:01
tendremos que pensar alguna estrategia 00:05:04
por lo pronto vamos a ir haciendo este evento 00:05:06
a ver 00:05:08
Keyvent 00:05:09
Pues venga, ahora mi panel root, le vamos a hacer un set on, el evento pulsar tecla, pues será uno de estos tres, pues keypress será, será este, cuál va a ser, vale, entonces voy a ver si también es event handler, el tipo de objeto que tengo que pasar, que lo será, sí, es un event handler también, 00:05:11
ya me sé de antes que el event handler 00:05:40
necesita un parámetro 00:05:43
de entrada y luego un código el que yo quiera 00:05:45
entonces pues planto yo una lambda directamente 00:05:47
pues venga 00:05:49
mi evento e 00:05:53
cuando 00:06:02
pulse yo una tecla quiero que hagas 00:06:04
esto, el que 00:06:06
pues vamos a crear un botón 00:06:08
el texto 00:06:10
del botón 00:06:16
va a ser el texto de la tecla pulsada 00:06:17
el texto de la tecla 00:06:22
pulsada, supongo que lo 00:06:25
podré sacar de E 00:06:27
que es el objeto key event 00:06:29
que tiene todo relacionado con el hecho de pulsar la tecla 00:06:31
supongo, ¿verdad? 00:06:34
secretaria, ¿me has encontrado ya el método para sacar 00:06:35
la tecla pulsada? 00:06:37
¿eh? 00:06:40
será getTest, supongo, ¿no? 00:06:41
será este, digo yo 00:06:44
getCode es, ¿seguro? 00:06:45
¿no es getTest? ah, no, porque getTest 00:06:49
es el mensaje del evento 00:06:51
vale 00:06:53
a ver 00:06:54
si no hay más 00:06:57
de code 00:06:58
de keycode, el código 00:07:01
y luego 00:07:03
no tengo que convertirlo 00:07:06
bueno, vamos a poner keycode y si no me gusta 00:07:07
ya le hago la conversión a char o lo que sea 00:07:09
vamos a dejar el keycode 00:07:11
lo digo porque a lo mejor me sale el código asti 00:07:13
0.3 00:07:16
o sea 0.3 o lo que sea 00:07:17
sacar 00:07:19
el texto de la tecla 00:07:28
que se pulsó, E, F 00:07:31
a través del evento E que es el event 00:07:32
entonces 00:07:35
pero getCode me saca keyCode 00:07:36
y luego de keyCode tendremos que sacarlo de alguna 00:07:43
manera 00:07:45
sí, pero luego cómo lo convertimos a string 00:07:46
sí, pero la conversión 00:07:49
a string tal cual me lo va a convertir 00:07:54
Ah, que tú ya lo has probado 00:07:55
Mira, te han sustituido como secretario 00:07:57
Ala 00:07:59
Bueno, yo dejo esto 00:08:01
A ver qué pasa 00:08:03
¿Vale? 00:08:04
Vale, y ahora 00:08:08
Añadir al panel 00:08:09
El botón es fácil 00:08:15
GetChildren 00:08:17
No, panel no, se llamaba root 00:08:19
Root.getChildren 00:08:21
.add 00:08:25
el botón B 00:08:29
vale, esto es fácil 00:08:32
pero yo aquí he añadido 00:08:38
el botón en la posición por 00:08:39
defecto, el problema es que 00:08:41
me han dicho que añada el botón 00:08:43
en una posición en concreta 00:08:45
en concreto, al menos voy a probar a ver si esto me funciona 00:08:47
y el texto me sale bien 00:08:50
poniendo el botón en una 00:08:51
posición en el medio 00:08:53
sin más, lo voy a poner 00:08:55
si era 400 en 200 00:08:58
el tamaño de mi esa 00:09:00
y aquí lo voy a poner en 200 también 00:09:02
voy a hacer esta primera versión 00:09:06
que me va a poner 00:09:08
el botón en esa posición 00:09:10
siempre, solamente para ver 00:09:12
si me ha cogido bien el este 00:09:16
vale, vamos a 00:09:18
ejecutar esto, vale 00:09:23
esto funciona, pues no me 00:09:31
captura el evento de tecla pulsada 00:09:37
para que coja el focus 00:09:39
pero 00:09:58
¿y por qué si lo ha cogido con el ratón? 00:09:58
de la tecla no lo pilla 00:10:10
pero tienes que poner 00:10:11
antes, no en el evento, aquí 00:10:12
ay que listos sois 00:10:14
o que lista es la IA 00:10:23
O los dos juntos 00:10:24
Pues que listo es Gemini 00:10:25
Vale, menos mal que lo tenemos 00:10:27
Vale, esto no sé 00:10:30
Que es 00:10:32
Entonces, esto es 00:10:33
Para que tenga el foco siempre 00:10:37
Lo que pasa es que claro, en esta aplicación 00:10:39
Para que pida el foco 00:10:41
Cada vez que pase algo 00:10:43
Claro, porque en esta aplicación igual no funciona 00:10:44
Pero en otras situaciones igual no 00:10:46
Pero bueno, con esto 00:10:48
¿Te ha funcionado? 00:10:50
Vale, esto sí 00:10:57
Pues si hay que poner 00:10:59
Request focus, aquí están todos los botoncitos 00:11:01
Vale 00:11:04
Pero lógicamente 00:11:07
Y esta es la posición 200, 200 00:11:09
Ah, es que he puesto dos veces 00:11:12
X, ah, vale, vale 00:11:15
Vale, vale, bueno 00:11:17
Pues efectivamente poniendo esto 00:11:20
Coge el foco 00:11:22
Y entonces pilla este evento 00:11:24
Porque 00:11:25
mi duda es por qué ha pillado 00:11:27
este sin tener eso 00:11:33
Yemi no dice nada al respecto 00:11:34
bueno, luego se lo preguntamos 00:11:38
si eso, venga, ahora vamos a completar esto 00:11:40
vale 00:11:42
bueno, pues entonces 00:11:44
hemos hecho parte 00:11:46
del ejercicio 00:11:48
pero no todo, hemos hecho 00:11:50
cuando pulsamos una tecla 00:11:52
colocar un botón 00:11:55
con el texto de la tecla 00:11:56
pero yo lo he puesto siempre en la posición 200-200 00:11:57
el ejercicio me dice que lo ponga 00:12:02
en la posición en la que está el ratón en ese momento 00:12:05
es decir, que lo ponga aquí 00:12:08
en la posición en la que está el ratón 00:12:11
pero claro, la posición en la que está el ratón 00:12:13
en ese momento, yo no la puedo sacar 00:12:17
de aquí, no la puedo sacar 00:12:20
de este event, ¿vale? porque este event 00:12:23
es el evento del teclado 00:12:26
solo tiene la información de lo que ha pasado 00:12:27
con el teclado 00:12:30
entonces no puedo sacar la posición 00:12:31
del ratón 00:12:34
¿cómo podemos poner aquí 00:12:34
la posición del ratón? 00:12:38
aquí yo tendría que poner algo 00:12:39
posición 00:12:42
posición del ratón 00:12:50
querría yo poner esto, posición del ratón 00:12:54
posición del ratón 00:12:57
esto es lo que necesito 00:13:03
que alguien me diga cuáles son 00:13:06
estas variables, que alguien me lo diga 00:13:08
es lo que necesito, ¿cuál es la posición del ratón X? 00:13:10
¿cuál es la posición del ratón Y? 00:13:12
no la puedo sacar de aquí, de aquí no puedo 00:13:13
porque este es el evento del teclado 00:13:16
este no sabe nada de dónde está el ratón 00:13:17
no la puedo sacar de aquí 00:13:19
¿qué hago con estas variables? ¿cómo me las invento? 00:13:21
¿qué hago? 00:13:24
a ver, pues habría 00:13:24
muchas posibilidades, pasar un 00:13:27
objeto, ratón 00:13:29
a hacer unas cosas muy raras 00:13:30
pero en este ejercicio en concreto lo tenemos más fácil 00:13:32
y es que ya 00:13:35
tenemos un evento que 00:13:37
captura cada vez que se mueve el ratón 00:13:39
cada vez que se mueve 00:13:41
entonces dentro de este evento, estas dos posiciones 00:13:42
que yo he capturado 00:13:45
si en lugar de ser variables locales 00:13:46
las saco fuera 00:13:49
a variables aquí, también 00:13:51
van a ser accesibles desde aquí 00:13:53
Con lo cual, perfecto, con eso lo solucionamos. Como estas variables ya van a tener siempre la posición del ratón, la van a tener siempre, pues no las dejes como locales, déjalas fuera de este bloque y ya son accesibles desde cualquier otro sitio. 00:13:54
Pues entonces 00:14:13
Ponemos aquí 00:14:15
Esas variables 00:14:17
Int 00:14:19
PostX 00:14:23
Y postY 00:14:26
Que son estas dos 00:14:28
Con lo cual 00:14:29
Este las actualiza 00:14:31
Luego estas variables 00:14:32
Van siguiendo siempre la posición del ratón 00:14:35
La van siguiendo 00:14:38
Pero al no ser ya variables locales 00:14:38
Sino al haberlas sacado aquí 00:14:42
Son accesibles desde aquí 00:14:43
pues las uso aquí mismo 00:14:45
pos ratón x 00:14:47
y pos y 00:14:49
vale 00:14:51
entonces este lógicamente 00:14:52
me dice 00:14:55
que podría no estar inicializada 00:15:00
entre otras cosas 00:15:01
a ver 00:15:02
igual las tengo que sacar 00:15:03
no entiendo por qué las tengo que hacer finales 00:15:07
Igual las tengo que sacar 00:15:17
A ver, siempre las puedo sacar aquí fuera 00:15:24
Y ya está 00:15:28
¿Cómo que si pones una sola te deja? 00:15:28
¿En serio? 00:15:39
A ver, siempre las puedo poner aquí fuera 00:15:47
pero como en el 00:15:52
supongo que sí 00:16:03
a ver vamos a ponerla 00:16:07
vale entonces 00:16:12
las quito de aquí 00:16:20
las quito de aquí 00:16:22
vale entonces 00:16:24
aquí sí 00:16:27
Bueno, acabo de entender muy bien 00:16:30
Tendría que pensarlo, porque dentro no 00:16:36
No me las deja 00:16:38
Porque tampoco he leído muy en detalle lo que me decía 00:16:40
Bueno, vamos a probar 00:16:42
Dejamos aparcado por ahora 00:16:46
Vale 00:16:49
Las hemos sacado fuera 00:16:50
¿Ibas a decir algo? 00:16:52
Bueno, las hemos sacado fuera 00:16:54
Entonces están disponibles 00:16:56
Están disponibles 00:16:59
Para 00:17:00
Cualquier método 00:17:01
Y cualquier clase interna y cualquier todo 00:17:05
Ahí están disponibles 00:17:07
Y actualizadas permanentemente aquí 00:17:09
Actualizadas aquí permanentemente 00:17:11
Y disponibles para quien quiera 00:17:13
¿Y quién las quiere? Pues las quiere este 00:17:15
Este las quiere 00:17:17
Pues las usa 00:17:19
Y ya está 00:17:21
Vamos a ver ahora 00:17:22
Bueno, pues este se mueve 00:17:25
Y ya está 00:17:34
¿Cómo? ¿Quién es coma? 00:17:40
¿A la coma? 00:17:43
Plus 00:17:45
Digit 2 00:17:52
Bueno, la conversión a string es peculiar 00:18:01
Pero bueno 00:18:04
Windows 00:18:05
Undefined 00:18:10
Vale, pues ya está 00:18:16
Muy bonito 00:18:28
Caps 00:18:29
Shift 00:18:39
Vale, pues ya está 00:18:40
Este acabado 00:18:47
¿Vale? 00:18:50
Voy a parar este momento 00:18:52
Voy a volver a ponerlas dentro 00:18:53
A ver si el mensaje que dice 00:18:54
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:
5 de mayo de 2026 - 12:38
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
18′ 58″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
81.59 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid