20250320 JavaFX_2 - 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:
Bueno, lo último en lo que nos habíamos quedado es que el controlador tiene que saber, esta etiqueta saludo sobre la que va a actuar, tiene que saber de dónde sale, si es una local que hemos creado aquí, con lo cual no serviría para nada, o si es una etiqueta que está en la vista.
00:00:00
Pues sí, es una que está en la vista
00:00:18
Y para eso te aviso poniéndote esta anotación
00:00:19
Vale
00:00:22
Si ejecutamos esto
00:00:23
Nos va a seguir todavía sin funcionar
00:00:26
Porque ya sé que nos falta lo ultimito
00:00:27
¿Vale?
00:00:30
Si ejecutamos esto nos va a seguir sin funcionar
00:00:31
Y nos sigue diciendo
00:00:34
Que
00:00:38
Oye, que no me has especificado el controlador
00:00:39
Claro
00:00:42
Es que la vista
00:00:43
FXML
00:00:44
La vista, la que tiene los componentes
00:00:46
que reciben el evento, la vista
00:00:49
tiene que tener especificado cuál es
00:00:51
la clase controlador, nada más, es lo único que nos
00:00:53
falta, entonces en este ficherito
00:00:55
de aquí, en este
00:00:57
fichero de vista saludar
00:01:01
el componente
00:01:03
que reciba eventos
00:01:05
él o los componentes que
00:01:07
reciban eventos, hay que asociarles
00:01:09
a su controlador
00:01:11
es como cuando hacíamos en swing
00:01:12
un botón y queríamos asociar
00:01:15
el botón a un listener
00:01:17
lo hacíamos con el addActionListener
00:01:18
aquí no lo hacemos por código
00:01:21
afortunadamente lo hacemos separado
00:01:23
entonces el equivalente
00:01:25
a asociar el controlador al botón
00:01:27
el equivalente al addActionListener
00:01:29
del swing es aquí ponerle
00:01:31
en el fxml una propiedad
00:01:33
controller
00:01:36
que la podemos poner
00:01:37
para no equivocarnos en la sintaxis
00:01:39
desde el builder también
00:01:41
entonces
00:01:42
aquí en el builder
00:01:44
si os fijáis
00:01:46
en el builder, perdón, si en el builder
00:01:49
en el builder, si os fijáis
00:01:51
hay aquí a la izquierda
00:01:53
una pestañita que pone
00:01:55
controlador, ¿vale?
00:01:57
para que pongamos la clase
00:01:59
controladora
00:02:01
pues venga, vamos a poner nuestra clase
00:02:02
controladora, nuestra clase controladora
00:02:05
se llama controller
00:02:07
pues venga
00:02:09
vamos a poner ahí mi clase
00:02:11
controladora
00:02:13
se llama
00:02:14
controller
00:02:16
y guardamos
00:02:17
vale
00:02:22
así se llama mi clase controladora
00:02:24
entonces
00:02:26
yo ahora estoy cuidado en el escritorio
00:02:28
guardando, no estoy abriendo
00:02:30
directamente desde
00:02:32
es esta sobre la que he hecho la modificación
00:02:33
entonces voy a
00:02:36
copiarla en el otro sitio
00:02:38
pero bueno, lo ideal sería abrirla directamente
00:02:40
desde la ubicación del proyecto, claro
00:02:42
vale, pues venga, la voy a
00:02:43
volver a pegar aquí la que he
00:02:48
modificado
00:02:50
y si la abrimos
00:02:51
efectivamente veis que ha añadido
00:02:54
aquí una propiedad
00:02:56
esta
00:02:58
tampoco era tan complicado, la podríamos
00:02:59
haber añadido a mano
00:03:02
el controlador es la clase controller
00:03:03
es lo que acaba de añadir
00:03:06
el controlador
00:03:09
es la clase controller
00:03:10
vale, pues ya creo
00:03:11
que nos falta todo, cualquier error
00:03:14
que surja a partir de ahora es no controlado
00:03:16
vamos a
00:03:18
sí, va, mañana viernes
00:03:20
vale
00:03:21
vamos a volver a arrancarla
00:03:23
vale
00:03:26
sí, a mí tampoco
00:03:30
es que me faltará el punto
00:03:32
class yo creo
00:03:40
porque la clase, sí, será que me falta el punto
00:03:40
class porque control está bien puesto
00:03:44
será que me falta el punto
00:03:45
class, verdad que sí
00:03:48
vamos a ponerse, vamos a ver
00:03:49
a ver si es eso
00:03:51
porque el error que ha sido
00:03:58
no puedo encontrarte la clase controller
00:04:00
ese ha sido el error que me ha dado
00:04:02
vale, vamos a volver a
00:04:04
ejecutar la buena que es esta
00:04:07
pero bueno, ¿qué pasa aquí?
00:04:08
¿qué me falta?
00:04:15
main start
00:04:22
no encuentro
00:04:23
controller.class
00:04:27
vale, identificado porque no encuentra la clase
00:04:28
pues lógicamente no encuentra la clase porque
00:04:36
aquí en la vista de saludar
00:04:39
aquí cuando yo le he dicho el controller
00:04:43
aquí el nombre de la clase se lo he puesto mal
00:04:47
no es controller, el nombre de la clase lógicamente es
00:04:54
application.controller, ese si es el nombre de la clase
00:04:58
vale, este sí que es el nombre
00:05:03
las clases tienen un nombre
00:05:09
que incluye su ruta de paquetes
00:05:11
vale, y aparte
00:05:15
aunque hubiera hecho esto bien
00:05:17
luego no me habría funcionado
00:05:19
porque se me había olvidado esto
00:05:21
pero esto ya lo he visto, ya lo hemos incorporado
00:05:23
y ya está
00:05:25
ahora salvo, por si hay que poner el class o no, que no recuerdo muy bien
00:05:26
en principio yo creo que
00:05:29
debería funcionar
00:05:31
sí, ya sí que funciona
00:05:33
entonces ahora ya la comodidad
00:05:39
cualquier cosa que queramos cambiar
00:05:42
en la vista, en el fxml
00:05:44
que quiero añadir otro componente con otro
00:05:46
evento, pues no pasa nada
00:05:48
añado el
00:05:50
evento aquí en el control, añado el método
00:05:51
aquí en el controller
00:05:54
en la vista
00:05:55
¿vale? le añado al componente
00:05:57
que sea su onAction
00:06:00
y ya está
00:06:02
entonces la estructura es
00:06:03
mi fxml
00:06:05
que tiene los componentes
00:06:07
si alguno de ellos tiene respuesta a evento
00:06:09
tendrá un onAction
00:06:12
un onAction con el método correspondiente
00:06:13
ese método estará
00:06:16
en el controlador
00:06:18
en el, perdón
00:06:19
ese método estará en la clase controlador
00:06:21
¿vale?
00:06:23
luego, esta clase controladora
00:06:26
todos los componentes a los que haga referencia
00:06:27
que sean de la vista las anotamos con fxml
00:06:30
al igual que los métodos
00:06:32
y ya está, y no hay nada más que hacer
00:06:33
¿En todas las anotaciones no puedo meter varios?
00:06:36
¿Tengo que poner cada uno?
00:06:38
Sí, sí, sí. Cada componente y cada miembro
00:06:40
si lleva una anotación, tiene que tener
00:06:42
su propia anotación.
00:06:44
Si yo aquí pusiera otro componente,
00:06:46
esta anotación solo
00:06:48
hace referencia a lo que tenga inmediatamente
00:06:50
después. No se pueden abrir.
00:06:52
Vale, entonces aquí que le queremos
00:06:55
cambiar, por ejemplo, le voy a poner
00:06:56
la hoja de estilo
00:06:58
de este otro proyecto, que sí que tiene
00:06:59
cosas.
00:07:02
Esta hoja de estilo.
00:07:04
porque quiero cambiar el aspecto de mi botón
00:07:05
pues voy a cambiar
00:07:08
esta hoja de estilo
00:07:10
y se la voy a poner aquí
00:07:11
esta hoja de estilo
00:07:14
pues tiene aquí un montón de cosas
00:07:17
el botón, los colorcitos de los botones
00:07:19
todo eso
00:07:22
aquí es como el nombre que recibe de la clase
00:07:24
pero bueno
00:07:30
todo esto siempre es
00:07:31
estas cositas ya sí que es algo que uno consulta
00:07:32
porque no se puede sacar de memoria
00:07:35
y aquí en el main
00:07:36
entonces vamos a decirle
00:07:40
que la hoja de estilo
00:07:43
que tiene que cargar, que no sea esta
00:07:44
sino que sea esta
00:07:46
en minúscula
00:07:48
y ahora ya, habiendo cargado
00:07:51
la hoja de estilo, cambia todo, no tenemos que hacer ningún
00:07:52
cambio en el código, si volvemos a ejecutar
00:07:54
esto, pues el botón
00:07:57
le ha cambiado el estilo
00:07:58
¿vale? sin cambios en código
00:07:59
sin recopilaciones y sin nada
00:08:02
entonces
00:08:04
pues por ejemplo
00:08:06
este proyecto es un proyecto chorra
00:08:08
que se hace en nada
00:08:10
este de aquí y tiene un aspecto
00:08:11
mucho más agradable
00:08:14
este de aquí
00:08:15
este sin hacer prácticamente
00:08:17
nada, pues como veis tiene otro
00:08:23
aspecto, aquí yo
00:08:26
voy agregando tareas, por ejemplo
00:08:28
este aspecto tan bonito
00:08:29
este es un elemento para colocar
00:08:30
componentes y él ya te lo pone de esta manera
00:08:33
Venga, vamos a agregar otra tarea
00:08:35
Pues esta, eliminar tarea
00:08:37
¿Vale?
00:08:39
Esto es mucho más sencillo y más corto de hacer
00:08:41
Con JavaFX que con Swim
00:08:43
Y más
00:08:45
Y más visible
00:08:46
Esto en el Steam Builder
00:08:48
Pues habría sido
00:08:52
Esta vista de aquí
00:08:53
En mi Steam Builder creo que es
00:08:54
Esta
00:08:59
Por ejemplo, ¿veis?
00:09:01
Esta es la vista de este proyecto
00:09:03
Que os he enseñado
00:09:05
Que no tiene tantos componentes
00:09:06
Tiene solamente estos de aquí
00:09:08
Entonces es una vista muy fácil de hacer
00:09:09
Controlador
00:09:12
Pues el main controller
00:09:14
Con un par de métodos
00:09:15
Y ya está
00:09:17
Y queda una aplicación
00:09:18
Pues mucho mejor
00:09:22
Más a lo que estamos acostumbrados
00:09:24
Que lo que podemos hacer
00:09:27
Por ejemplo
00:09:29
Esta de aquí
00:09:30
Creo que es esta
00:09:31
Esto así
00:09:33
esto, pues esto en swing
00:09:41
no es tan fácil, incorporar
00:09:45
este elemento que sea así de visible
00:09:48
que quede, pues aquí
00:09:50
metes el componente 3D en el escenario
00:09:51
y ya está, luego ya
00:09:54
claro, tienes que saber programar
00:09:56
y aquí para saber programar
00:09:57
pues en este por ejemplo
00:10:00
el componente que yo he metido
00:10:02
aquí
00:10:04
en la vista
00:10:04
es solo esto, una caja
00:10:07
he metido una caja
00:10:10
he metido una caja
00:10:11
y ahora tenemos que programar el movimiento
00:10:13
bueno, pues el
00:10:15
¿vale?
00:10:18
aquí está metida la caja
00:10:19
con las propiedades
00:10:21
y aquí el controlador
00:10:24
le cambia las coordenadas
00:10:28
y ya está, y un bucle infinito
00:10:29
en el que está todo el rato girando, un bucle infinito
00:10:31
¿vale? en función de que quiero que vaya más rápido
00:10:33
pues que se cambie de coordenadas más rápido
00:10:37
siempre hay que saber programar
00:10:40
no hay
00:10:42
Ah, no, es que como he quitado el hilo
00:10:42
Vale, esto estaba en el hilo
00:10:58
He quitado el hilo para que no tuviera hilos
00:10:59
Bueno, conclusión
00:11:00
Hacer cualquier aplicación gráfica
00:11:04
Con esta herramienta es más sencillo
00:11:07
Y más vistoso, pero desde luego
00:11:09
La parte del programa no la podéis olvidar
00:11:10
Porque tenéis que meter en el controlador
00:11:12
Todo lo que es el grueso de la aplicación
00:11:13
- 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:
- 9
- Fecha:
- 21 de marzo de 2025 - 10:57
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 11′ 18″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 62.58 MBytes