1 00:00:00,500 --> 00:00:21,039 Vale, la arquitectura de un proyecto JavaFX se facilita si incorporamos un plugin, igual que hemos incorporado el de Window Builder, pues hay un plugin para JavaFX que si lo incorporamos se facilita la creación de proyectos JavaFX con la estructura que habitualmente tienen, ¿vale? 2 00:00:21,039 --> 00:00:25,440 Entonces, lo primero que vamos a hacer va a ser instalar ese 3 00:00:25,440 --> 00:00:25,820 plugin. 4 00:00:26,339 --> 00:00:26,679 Nombre. 5 00:00:27,239 --> 00:00:27,679 Nombre. 6 00:00:27,859 --> 00:00:35,770 Pues, vamos a buscarlo en, ¿abrís el Eclipse Marketplace? 7 00:00:38,350 --> 00:00:39,929 Igual que, sí, un segundito. 8 00:00:40,250 --> 00:00:42,070 Y ahí buscáis por JavaFX. 9 00:00:42,710 --> 00:00:43,990 Y va a ser el primero que os salga. 10 00:00:48,070 --> 00:00:48,890 EFX Clipse. 11 00:00:49,090 --> 00:00:49,409 Ese. 12 00:00:50,710 --> 00:00:53,450 Pues, os saldrá EFX Clipse, ¿vale? 13 00:00:53,450 --> 00:00:57,880 pues instaláis ese plugin 14 00:00:57,880 --> 00:01:00,020 el plugin igual que el de window builder 15 00:01:00,020 --> 00:01:01,899 lógicamente no es necesario 16 00:01:01,899 --> 00:01:03,939 pero nos facilita 17 00:01:03,939 --> 00:01:06,319 arrancar un proyecto con una estructura determinada 18 00:01:06,319 --> 00:01:08,379 nos puede dar un primer código de partida 19 00:01:08,379 --> 00:01:09,500 igual que el window builder 20 00:01:09,500 --> 00:01:12,299 cuando arrancamos un JFrame desde el window builder 21 00:01:12,299 --> 00:01:14,280 ya nos da un código de partida 22 00:01:14,280 --> 00:01:16,519 etcétera 23 00:01:16,519 --> 00:01:24,060 vale, a mi es que me ha desaparecido 24 00:01:24,060 --> 00:01:25,840 el marketplace de aquí 25 00:01:25,840 --> 00:01:27,319 lo tengo que volver a poner, pero da igual 26 00:01:27,319 --> 00:01:28,280 ya lo tengo instalado 27 00:01:28,280 --> 00:01:34,120 bueno, mientras se va instalando 28 00:01:34,120 --> 00:01:35,099 que os tardará un poquito 29 00:01:35,099 --> 00:01:36,040 vale 30 00:01:36,040 --> 00:01:40,579 JavaFX 31 00:01:40,579 --> 00:01:42,060 igual que Swim 32 00:01:42,060 --> 00:01:44,040 utiliza por supuesto 33 00:01:44,040 --> 00:01:45,280 clases ya hechas 34 00:01:45,280 --> 00:01:47,519 y librerías de clases ya hechas 35 00:01:47,519 --> 00:01:49,859 los .jar famosos, ¿verdad? 36 00:01:50,939 --> 00:01:51,840 lo que pasa es que 37 00:01:51,840 --> 00:01:53,019 la librería de Swim 38 00:01:53,019 --> 00:01:55,359 ya está incorporada en la JRE 39 00:01:55,359 --> 00:01:57,519 hasta la versión actual 40 00:01:57,519 --> 00:01:59,140 incluso, en breve 41 00:01:59,140 --> 00:02:01,620 en futuras versiones de Java ya seguramente 42 00:02:01,620 --> 00:02:03,659 saquen, Swing y AWT 43 00:02:03,659 --> 00:02:05,359 pero ahora mismo todavía está 44 00:02:05,359 --> 00:02:07,379 incorporado, pero JavaFX 45 00:02:07,379 --> 00:02:09,419 que pesa un montón y son un montón 46 00:02:09,419 --> 00:02:10,139 de clases 47 00:02:10,139 --> 00:02:12,400 si, tranquilo 48 00:02:12,400 --> 00:02:13,960 yo que sé, pesa mucho 49 00:02:13,960 --> 00:02:16,939 el plugin, el que te ofrezca 50 00:02:16,939 --> 00:02:18,780 el último que te ofrezca 51 00:02:18,780 --> 00:02:20,939 el que te está ofreciendo el marketplace 52 00:02:20,939 --> 00:02:28,280 Vale, pues los .jar que tienen las clases de JavaFX hay que descargarlos aparte, ¿vale? 53 00:02:28,340 --> 00:02:32,259 Hay que descargarlos aparte porque no están incluidos en la JRE. 54 00:02:33,659 --> 00:02:40,259 Bueno, pues entonces, una vez que tengáis el plugin, vais a tener que descargar, que no hace falta que descarguéis, 55 00:02:41,000 --> 00:02:44,719 que voy a ver si os los puedo subir a un aula virtual o poner en la carpeta compartida. 56 00:02:45,240 --> 00:02:48,340 Bueno, así os voy a decir desde dónde tendréis que descargarlos, ¿vale? 57 00:02:48,340 --> 00:03:33,139 A ver, si vosotros buscáis en, vale, vale, pues a ver, vamos a imaginar que buscamos JavaFX por aquí, a ver que nos sale, entonces, JavaFX, down, load, para afinar un poquito más, bueno, pues es una herramienta de gluon. 58 00:03:33,979 --> 00:03:36,520 y aquí 59 00:03:36,520 --> 00:03:38,879 en esta página 60 00:03:38,879 --> 00:03:41,180 se pueden descargar esas librerías 61 00:03:41,180 --> 00:03:41,979 de las que os hablo 62 00:03:41,979 --> 00:03:44,919 que repito, no las incluye la JRE 63 00:03:44,919 --> 00:03:46,319 a diferencia de las de SWIN 64 00:03:46,319 --> 00:03:48,819 entonces los import 65 00:03:48,819 --> 00:03:50,800 van a necesitar que tengamos 66 00:03:50,800 --> 00:03:52,259 incorporadas esas clases 67 00:03:52,259 --> 00:03:55,039 entonces eso pues uno lo descargaría 68 00:03:55,039 --> 00:03:55,680 desde aquí 69 00:03:55,680 --> 00:03:58,780 no sé si 70 00:03:58,780 --> 00:04:00,840 tardaríais mucho en descargarlo 71 00:04:00,840 --> 00:04:01,340 yo creo que no 72 00:04:01,340 --> 00:04:03,800 lo digo porque si no 73 00:04:03,800 --> 00:04:05,039 comparto yo 74 00:04:05,039 --> 00:04:06,639 aquí 75 00:04:06,639 --> 00:04:10,460 si probáis a descargarlas 76 00:04:10,460 --> 00:04:18,129 si tiene pinta de que esto no tarda nada 77 00:04:18,129 --> 00:04:22,670 o poquito porque aquí me dice que esto ya está hecho 78 00:04:22,670 --> 00:04:25,310 aquí que 79 00:04:25,310 --> 00:04:30,009 no pero esperad 80 00:04:30,009 --> 00:04:30,550 esto no es 81 00:04:30,550 --> 00:04:31,610 esto no es 82 00:04:31,610 --> 00:04:34,709 esto no es 83 00:04:34,709 --> 00:04:44,959 No, perdón 84 00:04:44,959 --> 00:04:47,040 Ah, es que le he dado al jmods el sdk, perdón 85 00:04:47,040 --> 00:04:48,079 Vale 86 00:04:48,079 --> 00:04:51,959 El sdk ya sí que tarda más, claro 87 00:04:51,959 --> 00:04:54,600 ¿Qué diferencia hay entre jmods y sdk? 88 00:04:55,240 --> 00:04:57,040 Jmods son archivos de módulos 89 00:04:57,040 --> 00:04:58,939 Para organizar las clases 90 00:04:58,939 --> 00:05:00,699 Y el sdk 91 00:05:06,980 --> 00:05:11,300 Bueno, yo lo voy a detener porque yo ya sí que lo tengo descargado. 92 00:05:16,620 --> 00:05:21,920 Una vez que lo tengáis descargado, vale. 93 00:05:26,480 --> 00:05:32,920 Vale, cuando lo tengáis descargado tendréis este zip de aquí que cuando lo descomprimáis... 94 00:05:36,980 --> 00:05:44,160 Cuando descomprimáis el zip descargado y entréis en el descomprimido, veréis que entrando hay una carpeta lift. 95 00:05:45,139 --> 00:05:47,740 Dentro de ese zip navegáis y hay una carpeta lift. 96 00:05:48,199 --> 00:05:48,600 Jesús. 97 00:05:49,779 --> 00:05:57,819 Vale, pues dentro de la carpeta lift están todos esos JAR que tienen las clases que usa la herramienta JavaFX. 98 00:05:58,120 --> 00:05:59,439 Dentro de estos JAR están esas clases. 99 00:05:59,560 --> 00:06:03,199 Entonces, estas clases tendremos que incorporarlas a nuestros proyectos con JavaFX. 100 00:06:03,199 --> 00:06:05,980 no sé si recordáis como las incorporábamos 101 00:06:05,980 --> 00:06:08,300 pero ahora lo hacemos cuando arranquemos un primer proyecto 102 00:06:08,300 --> 00:06:09,540 vale 103 00:06:09,540 --> 00:06:12,100 si os ha instalado ya el plugin 104 00:06:12,100 --> 00:06:14,040 ha reiniciado ya Eclipse 105 00:06:14,040 --> 00:06:14,860 y todo eso 106 00:06:14,860 --> 00:06:18,819 tarda mucho 107 00:06:18,819 --> 00:06:22,019 vamos a parar un poquito 108 00:06:22,019 --> 00:06:24,100 vale 109 00:06:24,100 --> 00:06:25,920 una vez que tenemos el plugin instalado 110 00:06:25,920 --> 00:06:28,000 ya podemos arrancar un nuevo proyecto 111 00:06:28,000 --> 00:06:29,759 y vamos a darle ya 112 00:06:29,759 --> 00:06:31,720 la pequeña estructura 113 00:06:31,720 --> 00:06:32,920 que nos da el plugin 114 00:06:32,920 --> 00:06:35,060 que podríamos pasar de ella, pero bueno 115 00:06:35,060 --> 00:06:36,620 vamos a darle ya esa pequeña estructura 116 00:06:36,620 --> 00:06:38,879 esa pequeña estructura, recordad 117 00:06:38,879 --> 00:06:40,899 en new order, igual que buscábamos el builder 118 00:06:40,899 --> 00:06:43,060 pues aquí podremos 119 00:06:43,060 --> 00:06:45,420 encontrar el java fx 120 00:06:45,420 --> 00:06:47,300 ahí, habrá aparecido 121 00:06:47,300 --> 00:06:48,399 por el hecho de instalar el plugin 122 00:06:48,399 --> 00:06:51,120 y aquí, ¿qué queremos? pues un 123 00:06:51,120 --> 00:06:52,819 proyecto de java fx 124 00:06:52,819 --> 00:06:55,220 queremos un proyecto de java fx 125 00:06:55,220 --> 00:06:57,939 pues ala, marcamos proyecto de java fx 126 00:06:57,939 --> 00:07:01,060 ¿cómo le queremos llamar? 127 00:07:01,560 --> 00:07:02,879 pues como nos dé la gana 128 00:07:02,879 --> 00:07:08,350 Venga, va a ser 129 00:07:08,350 --> 00:07:10,230 El proyecto 130 00:07:10,230 --> 00:07:12,310 De saludarnos 131 00:07:12,310 --> 00:07:14,949 Saludar 132 00:07:14,949 --> 00:07:17,970 App para saludar 133 00:07:17,970 --> 00:07:18,850 Ya está 134 00:07:18,850 --> 00:07:30,079 Finish 135 00:07:30,079 --> 00:07:33,379 Y esta es nuestra app para saludar 136 00:07:33,379 --> 00:07:37,230 Estáis haciéndolo en paralelo, ¿no? 137 00:07:38,170 --> 00:07:39,750 No, porque es espectacular 138 00:07:39,750 --> 00:07:42,089 Ay, ay, ay, qué lentos, qué lentos 139 00:07:42,089 --> 00:07:44,170 Vuestro donador es tan lento como vosotros 140 00:07:44,170 --> 00:07:46,629 El mío no avanza 141 00:07:46,629 --> 00:07:52,250 Llama a Brian ahora mismo 142 00:07:52,250 --> 00:07:55,149 Y dile que venga por tu ordenador 143 00:07:55,149 --> 00:07:57,649 Y que la próxima vez te robe uno mejor 144 00:07:57,649 --> 00:07:59,209 No esa mierda que te roba 145 00:07:59,209 --> 00:08:00,470 Es que esto no lo compré yo 146 00:08:00,470 --> 00:08:01,910 Bueno, sí, se puede 147 00:08:01,910 --> 00:08:04,089 Creo que la propia aplicación ya te instalaba 148 00:08:04,089 --> 00:08:05,810 Ya te descargaba el java 149 00:08:05,810 --> 00:08:06,949 17% 150 00:08:06,949 --> 00:08:08,810 Porque, o sea, el propio 151 00:08:08,810 --> 00:08:10,269 Sí 152 00:08:10,269 --> 00:08:13,589 No, no, no, en realidad no 153 00:08:13,589 --> 00:08:15,310 Porque te pone esto, pero luego esto estaba 154 00:08:15,310 --> 00:08:17,230 Bueno, esto de aquí 155 00:08:17,230 --> 00:08:18,430 Está sin nada 156 00:08:18,430 --> 00:08:21,990 A ver, que si le haces algo seguramente lo haga 157 00:08:21,990 --> 00:08:22,269 Pero 158 00:08:22,269 --> 00:08:31,129 Abrelo 159 00:08:31,129 --> 00:08:35,470 Te sale un hard dentro 160 00:08:35,470 --> 00:08:37,669 Pero entras dentro y no tiene las clases 161 00:08:37,669 --> 00:08:39,409 Entonces esta librería 162 00:08:39,409 --> 00:08:40,649 Podríamos eliminarla de hecho 163 00:08:40,649 --> 00:08:43,610 A ver, que la podemos configurar para que los incluya 164 00:08:43,610 --> 00:08:45,070 Pero vamos a evitaros la vida 165 00:08:45,070 --> 00:08:49,330 que no, que no, que no os voy a examinar de esto 166 00:08:49,330 --> 00:08:51,450 vale, a ver, seguimos 167 00:08:51,450 --> 00:08:53,450 entonces, lo único 168 00:08:53,450 --> 00:08:55,750 que nos ha hecho el plugin 169 00:08:55,750 --> 00:08:57,250 es crearnos 170 00:08:57,250 --> 00:08:59,409 un paquete, que le podríamos haber 171 00:08:59,409 --> 00:09:01,389 cambiado el nombre, nos ha creado 172 00:09:01,389 --> 00:09:03,509 un paquete con un main 173 00:09:03,509 --> 00:09:05,429 que es el que va 174 00:09:05,429 --> 00:09:07,169 a arrancar nuestra 175 00:09:07,169 --> 00:09:09,049 primera, madre de Dios 176 00:09:09,049 --> 00:09:11,110 el que va a arrancar nuestra primera escena 177 00:09:11,110 --> 00:09:13,509 vale, entonces 178 00:09:13,509 --> 00:09:16,250 una aplicación JavaFX 179 00:09:16,250 --> 00:09:18,610 se organiza por escenas 180 00:09:18,610 --> 00:09:19,870 ¿vale? 181 00:09:20,690 --> 00:09:22,289 por, bueno, stage 182 00:09:22,289 --> 00:09:24,429 no sé, se traduce más bien como escenario 183 00:09:24,429 --> 00:09:25,990 quizás, ¿no? más que como escena 184 00:09:25,990 --> 00:09:27,730 vale, pues como escenario 185 00:09:27,730 --> 00:09:29,870 entonces, el método start 186 00:09:29,870 --> 00:09:32,090 nos arranca un primer escenario 187 00:09:32,090 --> 00:09:34,190 y este primer escenario 188 00:09:34,190 --> 00:09:35,470 es el que ya tiene las escenas 189 00:09:35,470 --> 00:09:37,769 ¿vale? entonces 190 00:09:37,769 --> 00:09:40,250 lo que te hace la aplicación es arrancarte 191 00:09:40,250 --> 00:09:41,950 un primer escenario 192 00:09:41,950 --> 00:09:43,909 este sería como el frame de partida 193 00:09:43,909 --> 00:09:44,389 en Swim 194 00:09:44,389 --> 00:09:47,889 si, si, si, ahora lo hacemos 195 00:09:47,889 --> 00:09:50,389 pero, si, si, si 196 00:09:50,389 --> 00:09:51,070 si 197 00:09:51,070 --> 00:09:53,789 bueno, no sé exactamente lo que has hecho, pero si ahora habrás 198 00:09:53,789 --> 00:09:55,009 hecho lo que vamos a hacer ahora, imagino 199 00:09:55,009 --> 00:09:56,210 vale, entonces 200 00:09:56,210 --> 00:09:59,429 lo único que nos ha hecho el plugin es incorporarnos 201 00:09:59,429 --> 00:10:01,570 nuestro main, que nuestro main 202 00:10:01,570 --> 00:10:03,490 arranca la aplicación 203 00:10:03,490 --> 00:10:05,289 arranca la aplicación 204 00:10:05,289 --> 00:10:06,610 y 205 00:10:06,610 --> 00:10:09,490 arranca la aplicación 206 00:10:09,490 --> 00:10:11,429 llamando al método start 207 00:10:11,429 --> 00:10:14,309 que mete una primera escena 208 00:10:14,309 --> 00:10:15,649 con este tamaño 209 00:10:15,649 --> 00:10:18,049 y ya está 210 00:10:18,049 --> 00:10:20,250 le da una hoja de estilo 211 00:10:20,250 --> 00:10:22,110 porque una de las ventajas 212 00:10:22,110 --> 00:10:22,809 de JavaFX 213 00:10:22,809 --> 00:10:23,809 dime 214 00:10:23,809 --> 00:10:28,480 ¿para qué? 215 00:10:31,340 --> 00:10:31,840 a ver 216 00:10:31,840 --> 00:10:32,700 ¿tú ya has instalado el plugin? 217 00:10:33,019 --> 00:10:35,100 bueno pues ahora haz un proyecto nuevo 218 00:10:35,100 --> 00:10:35,940 y ahora 219 00:10:35,940 --> 00:10:41,440 Eclipse Marketplace 220 00:10:41,440 --> 00:10:42,980 busca por JavaFX 221 00:10:42,980 --> 00:10:44,860 Y el que te ofrece que es EFX 222 00:10:44,860 --> 00:10:47,919 En Help 223 00:10:47,919 --> 00:10:50,980 En el mismo sitio donde estaba cuando buscaste el builder 224 00:10:50,980 --> 00:10:54,860 JavaFX 225 00:10:54,860 --> 00:10:58,799 O sea, con Pedro os metéis y con él no 226 00:11:05,139 --> 00:11:06,580 Sí, caerá muy bien 227 00:11:06,580 --> 00:11:09,340 Pero despierta de repente 228 00:11:09,340 --> 00:11:12,139 Sí, JavaFX 229 00:11:12,139 --> 00:11:15,039 Pues ese es el que hemos dicho 230 00:11:15,039 --> 00:11:15,960 Que tienes que instalar 231 00:11:15,960 --> 00:11:19,120 Ese es 232 00:11:19,120 --> 00:11:21,340 Vale 233 00:11:21,340 --> 00:11:22,919 Bueno, pues como 234 00:11:22,919 --> 00:11:25,080 Una de las ventajas que tiene JavaFX 235 00:11:25,080 --> 00:11:27,159 Es el desacoplamiento 236 00:11:27,159 --> 00:11:28,679 Es el 237 00:11:28,679 --> 00:11:30,740 Desacoplamiento, otra vez 238 00:11:30,740 --> 00:11:33,279 La palabra desacoplamiento la hemos usado a veces 239 00:11:33,279 --> 00:11:35,559 Que es separar funciones 240 00:11:35,559 --> 00:11:36,779 Dentro de una aplicación 241 00:11:36,779 --> 00:11:39,759 Por ejemplo, la hemos usado cuando decíamos 242 00:11:39,759 --> 00:11:42,019 Mucho mejor si en la aplicación 243 00:11:42,019 --> 00:11:43,539 separamos en clases diferentes 244 00:11:43,539 --> 00:11:46,419 lo relacionado con la vista, por ejemplo 245 00:11:46,419 --> 00:11:48,460 lo que ve el usuario, lo relacionado 246 00:11:48,460 --> 00:11:50,379 con el procesamiento de los 247 00:11:50,379 --> 00:11:52,639 datos, lo relacionado con utilidades 248 00:11:52,639 --> 00:11:54,360 matemáticas, si lo vamos separando 249 00:11:54,360 --> 00:11:56,539 en clases distintas y por tanto 250 00:11:56,539 --> 00:11:58,620 hacemos una aplicación desacoplada 251 00:11:58,620 --> 00:12:00,220 cualquier 252 00:12:00,220 --> 00:12:01,960 cambio, cualquier 253 00:12:01,960 --> 00:12:04,220 incorporación nueva que haya que hacer 254 00:12:04,220 --> 00:12:06,019 va a ser mucho más fácil porque yo toco 255 00:12:06,019 --> 00:12:08,159 solo la parte a la que afecta, si está 256 00:12:08,159 --> 00:12:10,039 todo mezclado y tengo que hacer 257 00:12:10,039 --> 00:12:12,600 alguna modificación, en esa mezcla 258 00:12:12,600 --> 00:12:14,580 me va a ser mucho más complicado incorporarlo 259 00:12:14,580 --> 00:12:16,620 pero cualquier cosa que incorpore va a afectar a lo demás 260 00:12:16,620 --> 00:12:18,879 bueno, pues una de las ventajas de JavaFX 261 00:12:18,879 --> 00:12:20,360 es que están las funciones 262 00:12:20,360 --> 00:12:22,500 más desacopladas, por ejemplo 263 00:12:22,500 --> 00:12:24,700 a la hora de darle aspecto 264 00:12:24,700 --> 00:12:25,980 a una aplicación 265 00:12:25,980 --> 00:12:28,120 en lugar de dárselo como en swing 266 00:12:28,120 --> 00:12:30,240 que teníamos que ir componente por componente 267 00:12:30,240 --> 00:12:32,360 poniéndole el color, set color 268 00:12:32,360 --> 00:12:33,840 set background, set no se que 269 00:12:33,840 --> 00:12:36,059 en el mismo código, lo podemos hacer 270 00:12:36,059 --> 00:12:37,899 mediante una hoja de estilo aparte 271 00:12:37,899 --> 00:12:39,179 pues es otra ventaja 272 00:12:39,179 --> 00:12:41,419 ¿Vale? Uno hace una hoja de estilo 273 00:12:41,419 --> 00:12:43,519 Las CSS, que es así que las conocéis muy bien 274 00:12:43,519 --> 00:12:45,340 Se hace su hoja de estilo 275 00:12:45,340 --> 00:12:47,240 Y la incorpora 276 00:12:47,240 --> 00:12:49,399 Y entonces ya su aplicación JavaFX 277 00:12:49,399 --> 00:12:50,559 Incorpora esos estilos 278 00:12:50,559 --> 00:12:52,379 ¿Que quiere cambiar el aspecto? 279 00:12:52,519 --> 00:12:55,220 No tiene que irse a la aplicación, cambiar código 280 00:12:55,220 --> 00:12:57,059 Y recompilar, que eso es lo que siempre 281 00:12:57,059 --> 00:12:59,500 Queremos evitar, recompilar aplicaciones 282 00:12:59,500 --> 00:13:01,519 Porque implica redesplegar en servidores 283 00:13:01,519 --> 00:13:03,620 ¿Que uno quiere cambiar el aspecto? 284 00:13:03,919 --> 00:13:05,039 Cambia la hoja de estilo 285 00:13:05,039 --> 00:13:06,940 Y la hoja de estilo no hay que recompilarla 286 00:13:06,940 --> 00:13:08,080 Y ya está, ¿vale? 287 00:13:08,080 --> 00:13:11,200 bueno, tus plegarias 288 00:13:11,200 --> 00:13:12,259 se han escuchado 289 00:13:12,259 --> 00:13:14,179 cuando estuve haciendo la calculadora dije 290 00:13:14,179 --> 00:13:16,700 ¿por qué no se puede usar CSS 291 00:13:16,700 --> 00:13:18,139 para diseñar esto? 292 00:13:19,419 --> 00:13:20,720 pues alguien en el pasado 293 00:13:20,720 --> 00:13:21,639 se oyó 294 00:13:21,639 --> 00:13:24,980 alguien en el, claro, la gente que se 295 00:13:24,980 --> 00:13:26,879 hace preguntas, es la gente 296 00:13:26,879 --> 00:13:28,879 pues que mueve el mundo, porque gracias a sus 297 00:13:28,879 --> 00:13:31,220 preguntas, algunos intentan 298 00:13:31,220 --> 00:13:33,139 ofrecer 299 00:13:33,139 --> 00:13:34,860 soluciones, bueno pues 300 00:13:34,860 --> 00:13:36,419 entonces, este pequeño main 301 00:13:36,419 --> 00:13:38,500 que nos ha ofrecido el JavaFX 302 00:13:38,500 --> 00:13:40,480 nos incluye esta línea 303 00:13:40,480 --> 00:13:42,700 que es para recuperar una hoja de estilo 304 00:13:42,700 --> 00:13:44,240 e incorporarla. 305 00:13:45,019 --> 00:13:46,799 Entonces, él nos ha metido una primera 306 00:13:46,799 --> 00:13:49,019 aplicación CSS que ahora mismo 307 00:13:49,019 --> 00:13:50,679 está vacía, o sea, una primera hoja de estilo. 308 00:13:51,179 --> 00:13:52,740 Pero si ponemos aquí estilos, 309 00:13:52,980 --> 00:13:54,519 pues cambia los estilos de nuestra aplicación. 310 00:13:54,600 --> 00:13:56,679 Ahora mismo no tiene nada. Vale. Y ya está. 311 00:13:57,279 --> 00:13:58,720 Y lo único que nos ha ofrecido el plugin 312 00:13:58,720 --> 00:14:00,879 es este main que arranca 313 00:14:00,879 --> 00:14:01,980 un escenario 314 00:14:01,980 --> 00:14:04,039 y luego una primera escena. 315 00:14:04,419 --> 00:14:06,340 Y se acabó. Vale, nada más. 316 00:14:06,419 --> 00:14:28,480 Pero claro, estas clases hay que importarlas, nos faltan, nos faltan de las clases correspondientes, ¿vale? Y si hacemos aquí esto de aquí, pues es que no nos ofrece import ni nos ofrece nada, porque los JAR no están agregados a la aplicación, o sea, las clases no están accesibles. 317 00:14:28,480 --> 00:14:31,759 a ver Jesús 318 00:14:31,759 --> 00:14:33,379 cállate ya 319 00:14:33,379 --> 00:14:36,019 que es que estás muy cerca y te oigo todo lo que dices 320 00:14:36,019 --> 00:14:37,559 vale, entonces 321 00:14:37,559 --> 00:14:40,299 tenemos que incorporar 322 00:14:40,299 --> 00:14:42,600 al pad de la aplicación 323 00:14:42,600 --> 00:14:44,240 tenemos que incorporar las clases 324 00:14:44,240 --> 00:14:46,080 que aquí faltan, vale 325 00:14:46,080 --> 00:14:47,980 entonces una forma muy sencilla 326 00:14:47,980 --> 00:14:50,480 es, ya que tenemos los hard directamente 327 00:14:50,480 --> 00:14:51,500 vamos a incorporarlos 328 00:14:51,500 --> 00:14:54,379 los hard, no sé dónde los tenéis 329 00:14:54,379 --> 00:14:56,539 vosotros los habréis descargado y guardado en algún sitio 330 00:14:56,539 --> 00:14:57,340 son los que están en list 331 00:14:57,340 --> 00:14:58,779 y ahí los podéis dejar 332 00:14:58,779 --> 00:15:01,240 vale, los que están en live 333 00:15:01,240 --> 00:15:02,940 bueno, pues entonces ahora 334 00:15:02,940 --> 00:15:04,320 vamos a incorporar 335 00:15:04,320 --> 00:15:11,120 esto es el main que me ha ofrecido aquí 336 00:15:11,120 --> 00:15:16,080 no, javafxproject 337 00:15:16,080 --> 00:15:21,139 bueno, es que vamos a hacer un proyecto de javafx 338 00:15:21,139 --> 00:15:22,679 un proyecto de javafx 339 00:15:22,679 --> 00:15:25,519 bueno, todo lo que quieras 340 00:15:25,519 --> 00:15:28,600 yo he hecho un proyecto de JavaFX 341 00:15:28,600 --> 00:15:30,620 eso es una herramienta para que exploreis 342 00:15:30,620 --> 00:15:32,419 vale, vosotros y solamente 343 00:15:32,419 --> 00:15:34,879 os la damos con la idea de que la conozcáis 344 00:15:34,879 --> 00:15:36,299 igual que nosotros la conocemos 345 00:15:36,299 --> 00:15:37,639 pero la conocemos por encima 346 00:15:37,639 --> 00:15:40,720 vosotros ahora podéis hacer maravillas con ello 347 00:15:40,720 --> 00:15:41,399 vale 348 00:15:41,399 --> 00:15:44,559 bueno, pues entonces, ¿cómo incorporamos 349 00:15:44,559 --> 00:15:46,740 los .jar? pues ya lo hicimos 350 00:15:46,740 --> 00:15:48,700 una vez cuando vimos lo de los paquetes 351 00:15:48,700 --> 00:15:50,480 etcétera, pues en el botón 352 00:15:50,480 --> 00:15:52,500 derecho podéis llegar 353 00:15:52,500 --> 00:15:54,460 a través de construir 354 00:15:54,460 --> 00:15:57,419 el path de la aplicación o a través de propiedades 355 00:15:57,419 --> 00:15:58,559 como os dé la gana 356 00:15:58,559 --> 00:16:00,379 la forma más fácil de llegar era 357 00:16:00,379 --> 00:16:03,539 a través de build path, vamos a configurar 358 00:16:03,539 --> 00:16:05,120 los caminos de mi aplicación 359 00:16:05,120 --> 00:16:07,279 vamos a configurar los caminos 360 00:16:07,279 --> 00:16:09,700 vale, pues mi aplicación 361 00:16:09,700 --> 00:16:10,100 tiene 362 00:16:10,100 --> 00:16:13,120 el camino hacia la 363 00:16:13,120 --> 00:16:15,279 máquina virtual, las clases de la máquina 364 00:16:15,279 --> 00:16:17,340 virtual, claro, por supuesto, menos mal que lo 365 00:16:17,340 --> 00:16:19,220 tiene, porque si no, no podría encontrar 366 00:16:19,220 --> 00:16:21,200 ni la clase string ni nada, claro que lo tiene 367 00:16:21,200 --> 00:16:22,440 y tiene 368 00:16:22,440 --> 00:16:27,360 y tiene el camino hacia esto 369 00:16:27,360 --> 00:16:29,659 pero esto no tiene 370 00:16:29,659 --> 00:16:31,580 incorporado 371 00:16:31,580 --> 00:16:32,320 las clases 372 00:16:32,320 --> 00:16:34,279 habría que decirle donde están 373 00:16:34,279 --> 00:16:37,360 entonces la forma más cómoda 374 00:16:37,360 --> 00:16:38,000 de hacer esto 375 00:16:38,000 --> 00:16:40,799 pincháis module path 376 00:16:40,799 --> 00:16:42,740 vamos a añadir nuestros 377 00:16:42,740 --> 00:16:45,460 jar externos y los seleccionáis 378 00:16:45,460 --> 00:16:47,379 los que están 379 00:16:47,379 --> 00:16:48,580 en live del proyecto 380 00:16:48,580 --> 00:16:53,200 no, porque vamos a trabajar con módulos 381 00:16:53,200 --> 00:16:57,460 si lo pones en módulo de paz 382 00:16:57,460 --> 00:16:59,860 la única diferencia es que tiene que haber un módulo de info 383 00:16:59,860 --> 00:17:01,679 y luego dentro del módulo de info 384 00:17:01,679 --> 00:17:03,639 como vamos a hacer ahora, cada vez que usas 385 00:17:03,639 --> 00:17:06,000 un paquete, indicarlo dentro 386 00:17:06,000 --> 00:17:07,039 pero eso lo vamos a ir haciendo 387 00:17:07,039 --> 00:17:11,759 hazlo en módulo de paz porque en classpath 388 00:17:11,759 --> 00:17:13,720 a mi muchas veces me ha dado problemas 389 00:17:13,720 --> 00:17:14,940 para arrancar el main 390 00:17:14,940 --> 00:17:17,099 hazlo en módulo de paz 391 00:17:17,099 --> 00:17:18,880 ¿Vale? No hay más 392 00:17:18,880 --> 00:17:20,819 diferencias que si lo haces en módulo 393 00:17:20,819 --> 00:17:22,839 de paz, entonces él busca siempre el módulo 394 00:17:22,839 --> 00:17:24,980 de info. Y en el 395 00:17:24,980 --> 00:17:27,000 módulo de info tú indicas, como vamos 396 00:17:27,000 --> 00:17:29,140 a indicar ahora, los paquetes 397 00:17:29,140 --> 00:17:31,160 que estás usando. Esencialmente es eso. 398 00:17:31,640 --> 00:17:33,099 Ya lo teníamos que borrar. 399 00:17:33,819 --> 00:17:34,720 No, no, no, no, no. 400 00:17:34,779 --> 00:17:37,160 Nos lo ha ofrecido. Yo por eso no os he dicho que lo borremos en ningún momento. 401 00:17:38,180 --> 00:17:38,779 Vale, pues nada. 402 00:17:39,519 --> 00:17:39,880 Aplicamos 403 00:17:39,880 --> 00:17:43,099 y ha desaparecido todo el rojo. 404 00:17:43,619 --> 00:17:44,980 ¿Vale? Porque ya tiene las clases. 405 00:17:45,579 --> 00:17:46,700 Y de hecho en referencia 406 00:17:46,700 --> 00:17:48,519 libraries pues veis que ya están ahí 407 00:17:48,519 --> 00:17:50,880 todos los paquetes con todas las clases 408 00:17:50,880 --> 00:17:52,440 vale 409 00:17:52,440 --> 00:17:57,710 si abrís el módulo info 410 00:17:57,710 --> 00:18:02,450 si abrís el módulo info por curiosidad 411 00:18:02,450 --> 00:18:04,549 el módulo info 412 00:18:04,549 --> 00:18:05,670 que nos ha creado el plugin 413 00:18:05,670 --> 00:18:08,250 como veis el módulo info lo único que te va 414 00:18:08,250 --> 00:18:09,369 incorporando aquí es 415 00:18:09,369 --> 00:18:11,309 los paquetes que vas usando 416 00:18:11,309 --> 00:18:14,470 entonces todos estos paquetes que estamos usando aquí 417 00:18:14,470 --> 00:18:18,619 vale 418 00:18:18,619 --> 00:18:20,900 Están en controls 419 00:18:20,900 --> 00:18:22,359 Están en controles 420 00:18:22,359 --> 00:18:23,700 Entonces 421 00:18:23,700 --> 00:18:26,880 Por eso este tiene un 422 00:18:26,880 --> 00:18:28,519 Requiero estos de aquí 423 00:18:28,519 --> 00:18:32,319 Vale, bueno, hasta aquí estamos 424 00:18:32,319 --> 00:18:36,079 Ahora ya podemos empezar la aplicación 425 00:18:36,079 --> 00:18:37,779 Esto ya si lo arrancamos 426 00:18:37,779 --> 00:18:39,200 Me va a hacer 427 00:18:39,200 --> 00:18:41,680 Una primera ventanita 428 00:18:41,680 --> 00:18:42,559 Pero muy básica 429 00:18:42,559 --> 00:18:50,940 vale, si lo arrancamos 430 00:18:50,940 --> 00:18:53,460 es un escenario con una escena que no tiene nada 431 00:18:53,460 --> 00:18:55,759 pero sutilmente 432 00:18:55,759 --> 00:18:57,559 veis que tiene un aspecto un poquito más 433 00:18:57,559 --> 00:18:59,599 moderno, ¿verdad? sutilmente se le ve 434 00:18:59,599 --> 00:19:01,579 algo menos ochentero, no es menos 435 00:19:01,579 --> 00:19:03,519 vintage esto, se le ve algo 436 00:19:03,519 --> 00:19:03,920 mejor 437 00:19:03,920 --> 00:19:05,480 vale 438 00:19:05,480 --> 00:19:09,559 esto ya es el aspecto 439 00:19:10,180 --> 00:19:11,339 de punto net 440 00:19:11,339 --> 00:19:13,460 es tal cual el aspecto, ahora lo veremos 441 00:19:13,460 --> 00:19:14,880 cuando lleguemos a las cosas. Más bonito. 442 00:19:15,240 --> 00:19:17,940 O sea, esto que es más fácil de usar 443 00:19:17,940 --> 00:19:19,539 y más moderno, 444 00:19:19,720 --> 00:19:21,799 no lo vamos a evaluar. Pero el JFrame sí. 445 00:19:22,740 --> 00:19:23,660 Pues este año 446 00:19:23,660 --> 00:19:25,380 sí, porque no hemos 447 00:19:25,380 --> 00:19:27,220 actualizado la programación. 448 00:19:27,559 --> 00:19:29,460 El año que viene yo creo que la vamos 449 00:19:29,460 --> 00:19:31,180 a actualizar. Pero este año 450 00:19:31,180 --> 00:19:33,279 seguimos con los contenidos del BOE y eran 451 00:19:33,279 --> 00:19:35,400 esos. Pero el año que viene sí que yo creo 452 00:19:35,400 --> 00:19:36,220 que la actualizaremos. 453 00:19:38,519 --> 00:19:38,920 Vale. 454 00:19:40,920 --> 00:19:41,519 Pues venga, 455 00:19:41,619 --> 00:19:43,319 vamos a hacer ahora ya nuestro primer proyecto. 456 00:19:43,460 --> 00:19:46,880 Bueno, de nuevo 457 00:19:46,880 --> 00:19:53,920 A ver si lo has añadido al classpath 458 00:19:53,920 --> 00:19:54,900 En vez de al module path 459 00:19:54,900 --> 00:19:57,660 Al module path 460 00:19:57,660 --> 00:19:58,779 Todo, bueno 461 00:19:58,779 --> 00:20:01,819 Vamos a intentar ver la primera estructura 462 00:20:01,819 --> 00:20:03,700 Y luego ya los que os hagan errores puntuales 463 00:20:03,700 --> 00:20:04,460 Los vamos arreglando 464 00:20:04,460 --> 00:20:07,539 Vale, pues ahora, vamos a hacer ya una aplicación 465 00:20:07,539 --> 00:20:09,660 En la que tenemos que meter un botoncito 466 00:20:09,660 --> 00:20:11,740 Una etiqueta para que cuando yo dé al botón 467 00:20:11,740 --> 00:20:12,660 Pues me salude 468 00:20:12,660 --> 00:20:14,900 lo típico, el primer ejercicio 469 00:20:14,900 --> 00:20:17,359 un evento de un botón 470 00:20:17,359 --> 00:20:19,680 y una realimentación con una etiqueta 471 00:20:19,680 --> 00:20:21,359 vale, pues de nuevo 472 00:20:21,359 --> 00:20:22,440 aquí javafx 473 00:20:22,440 --> 00:20:25,579 lo bonito que tiene es otra vez el desacoplamiento 474 00:20:25,579 --> 00:20:26,259 que es 475 00:20:26,259 --> 00:20:29,319 la vista, la parte de vista 476 00:20:29,319 --> 00:20:31,339 los controles que hay, todo eso 477 00:20:31,339 --> 00:20:33,119 lo vamos a sacar a un archivo 478 00:20:33,119 --> 00:20:34,119 xml 479 00:20:34,119 --> 00:20:36,880 toma ya, entonces estamos desacoplando un montón 480 00:20:36,880 --> 00:20:38,920 los estilos a un css 481 00:20:38,920 --> 00:20:42,480 a ver, xml sabe hacer 482 00:20:42,480 --> 00:20:42,960 todo el mundo. 483 00:20:47,759 --> 00:20:50,799 Bueno, pues 484 00:20:50,799 --> 00:20:52,579 un XML no es nada. 485 00:20:54,559 --> 00:20:56,940 Vale, entonces, el colmo del desacoplamiento. 486 00:20:57,220 --> 00:20:58,720 Un XML, obviamente, 487 00:20:59,119 --> 00:21:00,559 sabéis que 488 00:21:00,559 --> 00:21:01,799 es una 489 00:21:01,799 --> 00:21:04,660 forma de almacenar información 490 00:21:04,660 --> 00:21:06,319 y meta-información. 491 00:21:06,480 --> 00:21:08,660 ¿Sabéis lo que es la meta-información? Ese concepto 492 00:21:08,660 --> 00:21:10,500 lo conocéis, ¿no? Que es 493 00:21:10,500 --> 00:21:12,400 la información sobre la información. 494 00:21:12,480 --> 00:21:22,240 Una cosa son los datos y otra cosa es la información sobre estructura de esos datos, cómo se relacionan entre sí, por qué me han llegado de esa manera. 495 00:21:22,640 --> 00:21:26,880 Es decir, no son los datos en sí, sino información sobre esos datos. 496 00:21:28,059 --> 00:21:40,660 Pues entonces, ¿qué pasa? Como los ficheros de eso normalmente estaban en bases de datos, los datos eran los registros y los metadatos o la metainformación, la estructura de las tablas y de las claves. 497 00:21:40,660 --> 00:21:42,740 pero una base de datos pesa un montón 498 00:21:42,740 --> 00:21:44,920 entonces vamos a necesitar toda nuestra vida 499 00:21:44,920 --> 00:21:46,200 una base de datos para guardar datos 500 00:21:46,200 --> 00:21:48,079 con lo bonitos que son los ficheros de texto 501 00:21:48,079 --> 00:21:49,759 no, los ficheros de texto son maravillosos 502 00:21:49,759 --> 00:21:51,339 para guardar datos porque no pesan nada 503 00:21:51,339 --> 00:21:54,400 pues venga, vamos a intentar guardarlos en ficheros de texto 504 00:21:54,400 --> 00:21:56,720 ¿qué ocurre? que uno se pone a guardar datos 505 00:21:56,720 --> 00:21:57,480 en ficheros de texto 506 00:21:57,480 --> 00:22:00,220 hola, me llamo Juanito, peso 30 kilos 507 00:22:00,220 --> 00:22:01,200 bla bla bla bla bla 508 00:22:01,200 --> 00:22:04,220 esa información no hay ni Dios que la procese 509 00:22:04,220 --> 00:22:04,859 ni Dios 510 00:22:04,859 --> 00:22:07,940 una base de datos se procesa muy bien 511 00:22:07,940 --> 00:22:08,940 porque está estructurada 512 00:22:08,940 --> 00:22:11,680 una información, un fichero de texto, hola soy Juanito 513 00:22:11,680 --> 00:22:13,779 patatín patatán, no la procesa ni Dios 514 00:22:13,779 --> 00:22:15,460 porque no tiene ningún tipo de estructura 515 00:22:15,460 --> 00:22:17,839 pesa muy poco porque es texto, pero ni Dios 516 00:22:17,839 --> 00:22:19,460 puede procesar eso, vale 517 00:22:19,460 --> 00:22:21,700 pues ahí entra el XML, ya está 518 00:22:21,700 --> 00:22:23,759 vamos a darle una estructura a esta 519 00:22:23,759 --> 00:22:24,259 información 520 00:22:24,259 --> 00:22:27,700 justo, antes del XML 521 00:22:27,700 --> 00:22:29,180 entró el CSV 522 00:22:29,180 --> 00:22:31,680 que es, vamos a darle una estructura a esta información 523 00:22:31,680 --> 00:22:33,500 que es dividiéndole, al menos 524 00:22:33,500 --> 00:22:35,759 dividiéndola en campos, algo es algo 525 00:22:35,759 --> 00:22:37,900 la divido en campos con separadores 526 00:22:37,900 --> 00:22:40,920 y así al menos le facilito el trabajo a la máquina 527 00:22:40,920 --> 00:22:42,980 que ya va buscando los separadores 528 00:22:42,980 --> 00:22:46,660 y ya sabe que cada campo significa una cosa distinta 529 00:22:46,660 --> 00:22:48,880 algo de estructura ya tiene un csv 530 00:22:48,880 --> 00:22:52,980 pero es que mucha más estructura tiene el xml 531 00:22:52,980 --> 00:22:56,119 porque el xml decide una jerarquía 532 00:22:56,119 --> 00:22:58,119 voy a organizar la información 533 00:22:58,119 --> 00:22:59,819 una jerarquía donde hay un nodo raíz 534 00:22:59,819 --> 00:23:03,579 como bien sabéis ese nodo raíz me incluirá un montón de nodos 535 00:23:03,579 --> 00:23:06,839 cada nodo tiene una etiqueta que de alguna manera con su nombre 536 00:23:06,839 --> 00:23:09,079 describe de qué va, si además 537 00:23:09,079 --> 00:23:10,880 ese nodo tiene partes, lo meto 538 00:23:10,880 --> 00:23:12,400 en subnodos, pues ya está 539 00:23:12,400 --> 00:23:14,559 un XML es una forma ligera 540 00:23:14,559 --> 00:23:16,700 ligera de guardar información 541 00:23:16,700 --> 00:23:18,960 mucho más que una base de datos y además 542 00:23:18,960 --> 00:23:20,579 dándole una estructura muy útil 543 00:23:20,579 --> 00:23:23,079 y ahora ya, al tener una estructura 544 00:23:23,079 --> 00:23:25,160 y además darle unas reglas 545 00:23:25,160 --> 00:23:26,859 porque el XML tiene 546 00:23:26,859 --> 00:23:28,859 unas reglas, para que esté bien formado 547 00:23:28,859 --> 00:23:30,940 tiene además la opción de asociarle 548 00:23:30,940 --> 00:23:33,079 un esquema para que tú lo puedas 549 00:23:33,079 --> 00:23:34,759 validar y decir, oye, este XML 550 00:23:34,759 --> 00:23:37,099 responde a este esquema porque mi ordenador 551 00:23:37,099 --> 00:23:38,740 solo sabe procesar lo que tiene este esquema 552 00:23:38,740 --> 00:23:41,160 sí, sí, sí, este XML responde a este esquema 553 00:23:41,160 --> 00:23:43,259 ah, vale, pues entonces mi ordenador sabrá procesarlo 554 00:23:43,259 --> 00:23:45,180 entonces un XML es esa forma 555 00:23:45,180 --> 00:23:46,859 ligera y con 556 00:23:46,859 --> 00:23:48,380 directrices 557 00:23:48,380 --> 00:23:50,940 que facilitan que un ordenador 558 00:23:50,940 --> 00:23:53,019 sepa interpretar esa información 559 00:23:53,019 --> 00:23:54,960 ya está, con lo cual 560 00:23:54,960 --> 00:23:57,140 hacer un XML es poner datos en una estructura 561 00:23:57,140 --> 00:23:59,119 jerárquica y luego ya 562 00:23:59,119 --> 00:24:01,079 pues si yo quiero un esquema 563 00:24:01,079 --> 00:24:03,000 concreto, pues me hago ese esquema 564 00:24:03,000 --> 00:24:04,619 y lo valido, a ver si lo cumple o no 565 00:24:04,619 --> 00:24:05,920 y no hay más que saber de XML 566 00:24:05,920 --> 00:24:08,480 ¿Qué más queréis saber de XML? Nada más que eso 567 00:24:08,480 --> 00:24:11,000 Pues ya está. ¿Qué decir? No sabemos de XML 568 00:24:11,000 --> 00:24:12,740 Pues si sabéis eso, sabéis todo lo que hay que saber de XML 569 00:24:12,740 --> 00:24:14,180 Pues ya vamos al examen, ¿no? 570 00:24:15,059 --> 00:24:17,279 Tú sabes hacer esquemas, sabes validar 571 00:24:17,279 --> 00:24:18,920 XML con esquemas, sabes ver 572 00:24:18,920 --> 00:24:20,779 si un XML está bien formado, sabes ver 573 00:24:20,779 --> 00:24:22,400 pues ya está, es que de XML no hay más 574 00:24:22,400 --> 00:24:24,920 Nosotros el año que viene sabremos más cosas 575 00:24:24,920 --> 00:24:27,140 de XML, que es, vamos ahora a procesar 576 00:24:27,140 --> 00:24:28,759 XML entre nuestras aplicaciones 577 00:24:28,759 --> 00:24:31,000 Porque el XML no está solo para que 578 00:24:31,000 --> 00:24:33,079 lo vea un tío, o para que me lo muestre 579 00:24:33,079 --> 00:24:35,160 un navegador o para darle un estilo 580 00:24:35,160 --> 00:24:36,920 no está eso 581 00:24:36,920 --> 00:24:39,059 no está solo para asociarle un estilo 582 00:24:39,059 --> 00:24:40,660 para presentarlo en un navegador 583 00:24:40,660 --> 00:24:43,160 un XML también está para darle información 584 00:24:43,160 --> 00:24:44,420 de entrada a una aplicación 585 00:24:44,420 --> 00:24:47,119 bueno, pues esa es la parte que vemos nosotros el año que viene 586 00:24:47,119 --> 00:24:48,539 también, en algún tema 587 00:24:48,539 --> 00:24:50,920 cómo usar un XML como información de entrada 588 00:24:50,920 --> 00:24:51,819 para una aplicación 589 00:24:51,819 --> 00:24:55,339 vale, a cuento de que venía esto 590 00:24:55,339 --> 00:24:56,059 hoy siempre 591 00:24:56,059 --> 00:24:59,000 me lleváis por donde no 592 00:24:59,000 --> 00:24:59,660 tiene que ser 593 00:24:59,660 --> 00:25:02,519 porque es información muy útil 594 00:25:02,519 --> 00:25:05,059 vale, desde luego si es información 595 00:25:05,059 --> 00:25:06,259 que os pone en contexto 596 00:25:06,259 --> 00:25:08,619 es información que es 597 00:25:08,619 --> 00:25:10,599 muy bueno que tengáis, que es vamos a ver 598 00:25:10,599 --> 00:25:13,259 de qué van los tiros de lo que estoy haciendo, dónde se coloca cada cosa 599 00:25:13,259 --> 00:25:15,259 para que veáis qué más me va interesando 600 00:25:15,259 --> 00:25:16,819 en qué cosas me merece la pena 601 00:25:16,819 --> 00:25:18,140 a lo mejor que profundicen, cuáles no 602 00:25:18,140 --> 00:25:20,759 toda la información que os pone en contexto 603 00:25:20,759 --> 00:25:23,039 realmente es muy interesante 604 00:25:23,039 --> 00:25:24,359 aparte de los 605 00:25:24,359 --> 00:25:26,759 claro, incluso casi más que los contenidos 606 00:25:26,759 --> 00:25:28,779 pero los contenidos tenéis que tenerlos como 607 00:25:28,779 --> 00:25:30,539 entrenamiento, pero luego son variables 608 00:25:30,539 --> 00:25:32,400 obviamente, pero sirven como 609 00:25:32,400 --> 00:25:34,380 entrenamiento para luego aprender 610 00:25:34,380 --> 00:25:36,420 otros contenidos más fácilmente, pero esos 611 00:25:36,420 --> 00:25:38,460 en sí van a perder valor en un año, en dos 612 00:25:38,460 --> 00:25:39,799 en tres, entonces 613 00:25:39,799 --> 00:25:42,440 tienen el valor que tienen efectivamente 614 00:25:42,440 --> 00:25:44,460 todo esto a cuento de que venía 615 00:25:44,460 --> 00:25:45,960 que veo a 616 00:25:45,960 --> 00:25:48,420 a este mirando con una cara de emoción 617 00:25:48,420 --> 00:25:50,180 diciendo que ha puesto ahí 618 00:25:50,180 --> 00:25:51,839 pues nada, he abierto el módulo de info 619 00:25:51,839 --> 00:25:54,380 para que veáis que 620 00:25:54,380 --> 00:25:56,339 me ha creado un módulo de info con cosas que es necesario 621 00:25:56,339 --> 00:25:58,279 que exista porque lo he metido en el módulo de paz 622 00:25:58,279 --> 00:25:59,559 pero no tenemos que meternos en esto 623 00:25:59,559 --> 00:26:01,859 bueno, a todo esto 624 00:26:01,859 --> 00:26:03,440 venía a cuento del desacoplamiento 625 00:26:03,440 --> 00:26:05,720 que JavaFX me separa 626 00:26:05,720 --> 00:26:07,319 el estilo en el CSS 627 00:26:07,319 --> 00:26:09,640 y ya los controles 628 00:26:09,640 --> 00:26:11,359 si yo quiero, si no quiero no 629 00:26:11,359 --> 00:26:13,640 si quiero los meto ahí directamente en código 630 00:26:13,640 --> 00:26:15,519 a lo bestia, pero si quiero 631 00:26:15,519 --> 00:26:17,619 desacoplar los puedo sacar a un XML 632 00:26:17,619 --> 00:26:19,420 y en un XML 633 00:26:19,420 --> 00:26:21,880 pongo todos mis controles 634 00:26:21,880 --> 00:26:24,119 y ahora ya mi aplicación tiene todo muy separado 635 00:26:24,119 --> 00:26:25,640 y ahora mi aplicación 636 00:26:25,640 --> 00:26:28,079 lo único que hará es traer del XML 637 00:26:28,079 --> 00:26:30,380 a través de las librerías que están en el 638 00:26:30,380 --> 00:26:32,259 JAR, claro, leerse eso 639 00:26:32,259 --> 00:26:34,380 que hay, montarlo 640 00:26:34,380 --> 00:26:36,259 y darle el comportamiento que digamos 641 00:26:36,259 --> 00:26:38,400 y ya está. Luego, nuestra primera 642 00:26:38,400 --> 00:26:40,039 tarea ahora es hacer la vista 643 00:26:40,039 --> 00:26:42,480 y hacer el aspecto 644 00:26:42,480 --> 00:26:44,440 el botón, la etiqueta y todo eso 645 00:26:44,440 --> 00:26:46,339 luego ya será el comportamiento. Bueno, pues hacer 646 00:26:46,339 --> 00:26:47,720 esa vista de la aplicación 647 00:26:47,720 --> 00:26:50,079 va a implicar que tengamos que hacer un XML 648 00:26:50,079 --> 00:26:51,900 con esos controles 649 00:26:51,900 --> 00:26:54,500 ¡Madre mía! Tendrá que ser una estructura 650 00:26:54,500 --> 00:26:56,240 muy concreta, porque como no siga una 651 00:26:56,240 --> 00:26:57,900 estructura muy concreta 652 00:26:57,900 --> 00:26:59,660 la aplicación no lo va a entender 653 00:26:59,660 --> 00:27:01,720 habrá unas reglas para SXML 654 00:27:01,720 --> 00:27:03,480 tendrá que haber unas reglas, cuál es el nodo RAID 655 00:27:03,480 --> 00:27:05,799 cuáles son los nodos, no podemos aprendernos 656 00:27:05,799 --> 00:27:07,960 lo de memoria, no podemos saber de cabeza 657 00:27:07,960 --> 00:27:09,819 la estructura que tiene que tener 658 00:27:09,819 --> 00:27:11,920 SXML para hacerlo, menos mal 659 00:27:11,920 --> 00:27:12,920 que no hace falta 660 00:27:12,920 --> 00:27:16,180 porque tenemos una aplicación complementaria 661 00:27:16,180 --> 00:27:17,740 para JavaFX 662 00:27:17,740 --> 00:27:19,079 que es el Steam Builder 663 00:27:19,079 --> 00:27:21,319 que es el que te permite crear escenas 664 00:27:21,319 --> 00:27:23,440 con arrastra y pega y luego 665 00:27:23,440 --> 00:27:25,359 él te genera el XML 666 00:27:25,359 --> 00:27:27,720 menos mal, porque si no sería una locura 667 00:27:27,720 --> 00:27:29,920 Pues venga, esa es nuestra siguiente tarea 668 00:27:29,920 --> 00:27:31,740 Descargar 669 00:27:31,740 --> 00:27:33,599 El Steam Builder ese 670 00:27:33,599 --> 00:27:37,859 No, no es un plugin 671 00:27:37,859 --> 00:27:39,400 Es una aplicación aparte 672 00:27:39,400 --> 00:27:41,680 Es una aplicación aparte 673 00:27:41,680 --> 00:27:46,789 Entonces el también es de 674 00:27:46,789 --> 00:27:48,430 Glue-on, claro, y aquí 675 00:27:48,430 --> 00:27:52,750 Pues la descargáis para vuestra plataforma 676 00:27:52,750 --> 00:27:54,829 Si descargáis 677 00:27:54,829 --> 00:27:56,930 El Windows Installer, tú busca Steam Builder 678 00:27:56,930 --> 00:27:57,930 Lo primero que te sale 679 00:27:57,930 --> 00:28:00,569 Pues te descargas el instalador 680 00:28:00,569 --> 00:28:02,170 Para Windows y ya está 681 00:28:02,170 --> 00:28:05,819 ¿vale? 682 00:28:08,410 --> 00:28:09,750 lo descargáis 683 00:28:09,750 --> 00:28:12,029 lo instaláis 684 00:28:12,029 --> 00:28:16,349 y detenemos 685 00:28:16,349 --> 00:28:17,710 mientras lo instalamos 686 00:28:17,710 --> 00:28:20,069 bueno, pues una vez arrancadito 687 00:28:20,069 --> 00:28:20,869 dime 688 00:28:20,869 --> 00:28:24,369 ¿en la vacía? 689 00:28:24,549 --> 00:28:24,970 en la vacía 690 00:28:24,970 --> 00:28:27,650 empty, vale 691 00:28:27,650 --> 00:28:30,289 entonces lo primero es un contenedor para poder apoyar 692 00:28:30,289 --> 00:28:32,210 controles encima, pues aquí 693 00:28:32,210 --> 00:28:34,390 yo con la resolución de pantalla que tengo 694 00:28:34,390 --> 00:28:36,150 me es todo muy complicado 695 00:28:36,150 --> 00:28:38,029 lo veréis mejor, hay un montón de contenedores 696 00:28:38,029 --> 00:28:38,990 pero 697 00:28:38,990 --> 00:28:42,150 yo voy a poner el panel de ancla 698 00:28:42,150 --> 00:28:43,190 este, vale 699 00:28:43,190 --> 00:28:45,390 pues cogéis el panel 700 00:28:45,390 --> 00:28:48,089 un panel para anclarlo 701 00:28:48,089 --> 00:28:49,630 todo, a mí eso de ancla me ha gustado 702 00:28:49,630 --> 00:28:52,490 y ya está 703 00:28:52,490 --> 00:28:54,150 entonces 704 00:28:54,690 --> 00:28:56,990 vale 705 00:28:56,990 --> 00:28:59,490 voy a ponerlo para que al menos 706 00:28:59,490 --> 00:29:01,289 este es mi panel 707 00:29:01,289 --> 00:29:06,299 veis, me aparece aquí en la jerarquía 708 00:29:06,299 --> 00:29:22,359 Aquí me aparece en la jerarquía ya un elemento, el panel y aquí a la derecha pues tengo la ventanita de properties pues para darle aspecto y ponerle cositas, si quiero. 709 00:29:22,359 --> 00:29:30,759 y luego 710 00:29:30,759 --> 00:29:33,619 tengo una ventana 711 00:29:33,619 --> 00:29:35,319 code donde properties 712 00:29:35,319 --> 00:29:37,579 tengo también la de 713 00:29:37,579 --> 00:29:39,359 gestor de ubicación para jugar aquí 714 00:29:39,359 --> 00:29:41,400 con los padding del panel 715 00:29:41,400 --> 00:29:43,740 con cositas que podéis jugar para ver los componentes 716 00:29:43,740 --> 00:29:44,519 donde van a caer 717 00:29:44,519 --> 00:29:46,400 donde podéis jugar con eso 718 00:29:46,400 --> 00:29:49,460 y tengo una ventanita de código 719 00:29:49,460 --> 00:29:51,279 que esta es importante 720 00:29:51,279 --> 00:29:53,539 porque como hemos dicho 721 00:29:53,539 --> 00:29:55,740 todo esto que vamos a hacer 722 00:29:55,740 --> 00:29:57,500 aquí se va a recoger 723 00:29:57,500 --> 00:29:59,200 un XML, no se va a recoger en código 724 00:29:59,200 --> 00:30:00,779 se va a recoger un XML 725 00:30:00,779 --> 00:30:03,319 pero el XML tiene que 726 00:30:03,319 --> 00:30:05,799 conectarse con el código de alguna manera 727 00:30:05,799 --> 00:30:07,680 pues se va a conectar con 728 00:30:07,680 --> 00:30:09,460 el código a través de los nombres 729 00:30:09,460 --> 00:30:11,960 que reciba en el XML 730 00:30:11,960 --> 00:30:13,839 cada elemento que yo ponga aquí 731 00:30:13,839 --> 00:30:15,440 entonces 732 00:30:15,440 --> 00:30:17,420 si yo tengo que hacer referencia 733 00:30:17,420 --> 00:30:19,180 en el código 734 00:30:19,180 --> 00:30:21,500 al elemento, si tengo que hacer referencia 735 00:30:21,500 --> 00:30:23,740 en el código al elemento, voy a hacer referencia 736 00:30:23,740 --> 00:30:25,380 a ese elemento a través del nombre 737 00:30:25,380 --> 00:30:26,440 que yo ponga aquí 738 00:30:26,440 --> 00:30:29,420 en esta pestañita que pone 739 00:30:29,420 --> 00:30:30,299 fxid 740 00:30:30,299 --> 00:30:33,559 a través del nombre que pongamos ahí 741 00:30:33,559 --> 00:30:35,559 mi programa java 742 00:30:35,559 --> 00:30:37,119 va a poder hacer referencia 743 00:30:37,119 --> 00:30:38,980 a ese componente del fxml 744 00:30:38,980 --> 00:30:41,579 pero a lo mejor no tiene por qué hacerla 745 00:30:41,579 --> 00:30:42,920 no tiene por qué hacerla 746 00:30:42,920 --> 00:30:44,880 si no tiene que hacer nada con él 747 00:30:44,880 --> 00:30:47,539 si no tiene que desde el controlador 748 00:30:47,539 --> 00:30:48,759 que es el que gestiona el evento 749 00:30:48,759 --> 00:30:50,660 cambiarle algo, no tiene que hacer referencia 750 00:30:50,660 --> 00:30:53,079 con lo cual este panel nosotros podemos por ahora 751 00:30:53,079 --> 00:30:55,019 dejar eso vacío, no hace falta que le pongamos nada 752 00:30:55,019 --> 00:30:58,039 porque si mi controlador 753 00:30:58,039 --> 00:30:59,759 mi código, porque mi aplicación 754 00:30:59,759 --> 00:31:01,000 JavaFX ahora mismo 755 00:31:01,000 --> 00:31:03,839 el código va a ser casi exclusivamente 756 00:31:03,839 --> 00:31:05,920 la parte de respuesta 757 00:31:05,920 --> 00:31:07,660 a los eventos, la parte de respuesta 758 00:31:07,660 --> 00:31:09,299 porque la vista ya está en el XML 759 00:31:09,299 --> 00:31:11,519 y el estilo ya está en el CSS 760 00:31:11,519 --> 00:31:13,700 entonces lo que va a estar 761 00:31:13,700 --> 00:31:15,960 realmente en código va a ser el evento 762 00:31:15,960 --> 00:31:17,279 la respuesta al evento 763 00:31:17,279 --> 00:31:19,480 pues si como respuesta al evento 764 00:31:19,480 --> 00:31:21,200 yo no tengo que hacer nada con el panel 765 00:31:21,200 --> 00:31:23,099 a lo mejor no tengo ni que darle nombre 766 00:31:23,099 --> 00:31:25,420 no tengo ni que darle nombre 767 00:31:25,420 --> 00:31:27,700 en nuestra aplicación que vamos a hacer 768 00:31:27,700 --> 00:31:29,140 vamos a tener un botón y una etiqueta 769 00:31:29,140 --> 00:31:31,779 a la etiqueta sí que vamos a hacer referencia desde el evento 770 00:31:31,779 --> 00:31:33,400 porque hay que ponerle el mensaje saludar 771 00:31:33,400 --> 00:31:35,259 entonces a la etiqueta vamos a tener que ponerle un nombrecito 772 00:31:35,259 --> 00:31:37,140 para que el código pueda acceder a ella 773 00:31:37,140 --> 00:31:39,579 pero yo el panel por ahora lo dejo sin nombre y ya está 774 00:31:39,579 --> 00:31:42,019 y luego como además veis en código 775 00:31:42,019 --> 00:31:46,220 si este panel 776 00:31:46,220 --> 00:31:48,019 va a tener respuesta a evento 777 00:31:48,019 --> 00:31:49,819 se le pondría aquí 778 00:31:49,819 --> 00:31:51,720 el nombre del método 779 00:31:51,720 --> 00:31:53,539 el nombre del método 780 00:31:53,539 --> 00:31:56,539 pero este panel no va a recibir eventos 781 00:31:56,539 --> 00:31:58,200 el único que va a recibir eventos es el botón 782 00:31:58,200 --> 00:31:59,880 entonces yo esto lo dejo todo vacío 783 00:31:59,880 --> 00:32:02,279 ¿vale? bueno pues ya está 784 00:32:02,279 --> 00:32:04,619 el panel ya está, vamos a poner el botoncito 785 00:32:04,619 --> 00:32:06,559 el pues 786 00:32:06,559 --> 00:32:08,460 cogemos un botón o lo que os dé la gana 787 00:32:08,460 --> 00:32:09,220 a vosotros 788 00:32:09,220 --> 00:32:11,819 lo arrastramos 789 00:32:11,819 --> 00:32:16,509 y me aparece aquí en la jerarquía 790 00:32:16,509 --> 00:32:18,490 efectivamente debajo del panel este 791 00:32:18,490 --> 00:32:22,549 y aquí en las propiedades 792 00:32:22,549 --> 00:32:24,650 del botón pues le cambio lo que yo 793 00:32:24,650 --> 00:32:24,970 quiera 794 00:32:24,970 --> 00:32:33,859 Pablo va a poder hacer 795 00:32:33,859 --> 00:32:35,420 aquí auténticas maravillas 796 00:32:35,420 --> 00:32:36,099 va a poder hacer 797 00:32:36,099 --> 00:32:39,539 va a hacer lo que le dé la gana y encima 798 00:32:39,539 --> 00:32:41,619 cada vez que le des el botón que te salga 799 00:32:41,619 --> 00:32:42,819 ahí y que se te ponga en verde 800 00:32:42,819 --> 00:32:45,680 va a hacer lo que quiera 801 00:32:45,680 --> 00:32:51,019 y ahora vamos a poner la etiqueta 802 00:32:51,019 --> 00:32:53,500 la etiqueta es otro control 803 00:32:53,500 --> 00:32:58,359 Pues díselo 804 00:32:58,359 --> 00:33:00,019 A Deep Blue 805 00:33:00,019 --> 00:33:04,099 A ver, un ajedrez que juegue bien 806 00:33:04,099 --> 00:33:05,400 O un ajedrez que juegue mal 807 00:33:05,400 --> 00:33:10,099 A ver, en algún momento 808 00:33:10,099 --> 00:33:11,559 Encontraré una etiqueta por aquí 809 00:33:11,559 --> 00:33:13,380 Label 810 00:33:13,380 --> 00:33:14,599 Vale 811 00:33:14,599 --> 00:33:20,940 Mi etiqueta 812 00:33:20,940 --> 00:33:24,460 Pues mi etiqueta está en la jerarquía 813 00:33:24,460 --> 00:33:25,400 Dentro del panel 814 00:33:25,400 --> 00:33:27,779 Debía quitar texto 815 00:33:27,779 --> 00:33:30,039 porque ahora mismo está vacía, solo se va a poder 816 00:33:30,039 --> 00:33:30,880 texto cuando salude 817 00:33:30,880 --> 00:33:33,099 y 818 00:33:33,099 --> 00:33:35,819 mi etiqueta 819 00:33:35,819 --> 00:33:38,319 yo ya sabiendo el funcionamiento de la aplicación ya preveo 820 00:33:38,319 --> 00:33:40,319 que el controlador 821 00:33:40,319 --> 00:33:41,900 el que responde al evento, el listener 822 00:33:41,900 --> 00:33:43,819 el que en 823 00:33:43,819 --> 00:33:46,039 Swin se llama listener, que aquí lo llaman en el controlador 824 00:33:46,039 --> 00:33:47,880 pues el listener 825 00:33:47,880 --> 00:33:50,299 barra controlador va a tener que hacer referencia a esta etiqueta 826 00:33:50,299 --> 00:33:52,119 con lo cual un nombre va a necesitar 827 00:33:52,119 --> 00:33:53,940 pues vamos a irnos a su pestañita 828 00:33:53,940 --> 00:33:56,019 de código y le vamos 829 00:33:56,019 --> 00:33:57,980 a decir, oye, tú te vas a llamar 830 00:33:57,980 --> 00:33:59,980 pues como te quieras 831 00:33:59,980 --> 00:34:01,819 llamar, saludo. 832 00:34:03,420 --> 00:34:04,079 Te vas a 833 00:34:04,079 --> 00:34:05,339 llamar, saludo. Ya está. 834 00:34:07,740 --> 00:34:09,780 Bueno, vamos a guardar 835 00:34:09,780 --> 00:34:11,079 porque aquí no estamos guardando nada. 836 00:34:11,920 --> 00:34:14,059 Venga, por ahora la voy a guardar en el escritorio por comodidad. 837 00:34:14,199 --> 00:34:15,280 Guardarla donde os dé la gana. 838 00:34:17,639 --> 00:34:18,039 Vista, 839 00:34:18,260 --> 00:34:19,960 saludar. Y como veis, la 840 00:34:19,960 --> 00:34:22,420 guarda con extensión fxml. 841 00:34:25,079 --> 00:34:25,300 Ala, 842 00:34:25,300 --> 00:34:26,579 ya la tenemos guardada. 843 00:34:26,579 --> 00:34:47,179 Vale, nuestra vista ya está. Ahora, va a haber alguno de estos controles o elementos que hemos puesto aquí, va a necesitar respuesta a eventos, el botón. Vale, pues nos vamos al botón otra vez. Nos vamos al botón y desplegamos código. 844 00:34:47,179 --> 00:34:49,260 y vamos a ver 845 00:34:49,260 --> 00:34:51,280 a ver, ¿a qué evento queremos que responda? 846 00:34:51,840 --> 00:34:53,320 al por defecto que es el 847 00:34:53,320 --> 00:34:55,320 onAction, el onAction sería el 848 00:34:55,320 --> 00:34:57,360 evento por defecto, como el actionListener de swing 849 00:34:57,360 --> 00:34:59,300 claro, o al 850 00:34:59,300 --> 00:35:01,320 cuando yo lo arrastro al drag 851 00:35:01,320 --> 00:35:03,179 drop, al drag no se que, al drag que entrena 852 00:35:03,179 --> 00:35:05,300 al mouse no se que, a todas esas morrallas que hay por ahí 853 00:35:05,300 --> 00:35:07,239 abajo, bueno 854 00:35:07,239 --> 00:35:08,940 vamos a poner al por defecto 855 00:35:08,940 --> 00:35:11,159 vale, pues yo aquí me limito a poner 856 00:35:11,159 --> 00:35:13,239 el nombre del método 857 00:35:13,239 --> 00:35:14,920 que va 858 00:35:14,920 --> 00:35:17,460 allá, que voy a programar 859 00:35:17,460 --> 00:35:18,920 en mi aplicación. Porque en el 860 00:35:18,920 --> 00:35:21,280 FXML tiene que figurar el nombre de ese 861 00:35:21,280 --> 00:35:23,500 método. Vale. Pues 862 00:35:23,500 --> 00:35:25,239 pulsa botón o 863 00:35:25,239 --> 00:35:26,139 como lo queráis llamar. 864 00:35:27,900 --> 00:35:29,280 Ala. Tenemos 865 00:35:29,280 --> 00:35:31,300 el nombre del método. Pulsa botón. 866 00:35:33,900 --> 00:35:34,380 Guardado. 867 00:35:37,980 --> 00:35:38,500 Y ahora, 868 00:35:42,579 --> 00:35:44,099 vale, esto va a tener 869 00:35:44,099 --> 00:35:46,059 la vista ya está. 870 00:35:46,539 --> 00:35:48,699 La vista ya está. Y si abrimos por curiosidad 871 00:35:48,699 --> 00:35:50,360 el FXML que me ha generado, 872 00:35:50,360 --> 00:35:54,179 que está aquí 873 00:35:54,179 --> 00:35:56,019 lo abrís con el blog de notas 874 00:35:56,019 --> 00:35:58,239 o con cualquier editor de xml que os sea 875 00:35:58,239 --> 00:35:59,619 cómodo 876 00:35:59,619 --> 00:36:01,920 o con el navegador 877 00:36:01,920 --> 00:36:03,619 con lo que queráis que abra xml 878 00:36:03,619 --> 00:36:07,719 vale pues este es el xml 879 00:36:07,719 --> 00:36:08,920 vale 880 00:36:08,920 --> 00:36:11,679 entonces como veis pues 881 00:36:11,679 --> 00:36:13,599 tenemos 882 00:36:13,599 --> 00:36:16,079 el nodo raíz que es el panel 883 00:36:16,079 --> 00:36:17,460 ese es el nodo raíz 884 00:36:17,460 --> 00:36:19,079 con sus propiedades 885 00:36:19,079 --> 00:36:22,380 tiene un nodo 886 00:36:22,380 --> 00:36:23,500 que es el hijos 887 00:36:23,500 --> 00:36:25,840 ¿cuántos hijos tiene el nodo raíz? 888 00:36:26,340 --> 00:36:27,659 pues tiene un nodo hijo 889 00:36:27,659 --> 00:36:29,900 que tiene aquí 890 00:36:29,900 --> 00:36:31,780 como texto saludame 891 00:36:31,780 --> 00:36:33,579 on action 892 00:36:33,579 --> 00:36:35,519 esto suena a javascript ¿verdad? 893 00:36:36,760 --> 00:36:37,159 cuando 894 00:36:37,159 --> 00:36:39,019 bueno 895 00:36:39,019 --> 00:36:42,239 pues cuando se accione este botón 896 00:36:42,239 --> 00:36:43,880 se llamará este método 897 00:36:43,880 --> 00:36:45,280 pulsa botón 898 00:36:45,280 --> 00:36:48,099 ¿vale? luego tenemos otro hijo que es la etiqueta 899 00:36:48,099 --> 00:36:50,619 el nombre de la etiqueta saludo 900 00:36:50,619 --> 00:36:52,119 a botón, como no le hemos puesto nombre 901 00:36:52,119 --> 00:36:54,340 pues no está figurando el atributo 902 00:36:54,340 --> 00:36:55,079 fx saludo 903 00:36:55,079 --> 00:36:58,619 y tampoco tiene un on action, label no tiene un on action 904 00:36:58,619 --> 00:37:00,079 porque label no responde a evento 905 00:37:00,079 --> 00:37:02,199 pues ya está, me ha generado este xml 906 00:37:02,199 --> 00:37:04,340 hombre, sí, lo podríamos haber hecho a mano, pero esto es un rollo 907 00:37:04,340 --> 00:37:05,239 de hacerlo a mano, no 908 00:37:05,239 --> 00:37:08,179 cuando uno tenga una jerarquía 909 00:37:08,179 --> 00:37:09,940 con mil cosas, este xml es enorme 910 00:37:09,940 --> 00:37:14,219 ya, pero eso no será un evento 911 00:37:14,219 --> 00:37:15,099 se lo hagas tú desde código 912 00:37:15,099 --> 00:37:17,920 por eso le has puesto nombre, por eso este tiene 913 00:37:17,920 --> 00:37:19,860 nombre, porque ahí para hacer el set 914 00:37:19,860 --> 00:37:21,179 necesitas el nombre, vale 915 00:37:21,179 --> 00:37:23,780 vale, pues nuestro fxml ya está 916 00:37:23,780 --> 00:37:26,039 vale 917 00:37:26,039 --> 00:37:27,599 entonces, ahora 918 00:37:27,599 --> 00:37:29,739 la aplicación esta 919 00:37:29,739 --> 00:37:30,940 lo tiene que encontrar 920 00:37:30,940 --> 00:37:32,780 lo tiene que encontrar 921 00:37:32,780 --> 00:37:35,920 entonces, lo más cómodo es que 922 00:37:35,920 --> 00:37:37,239 la metamos directamente 923 00:37:37,239 --> 00:37:39,920 en una ruta de la aplicación, que la metamos aquí 924 00:37:39,920 --> 00:37:41,579 el fxml 925 00:37:41,579 --> 00:37:43,579 para que lo encuentre, lo metamos dentro del proyecto 926 00:37:43,579 --> 00:38:12,489 que no tengamos, vale, pues bueno, copiad el fxml, copiadlo, que no tiene por qué estar dentro, puede estar fuera, porque luego desde el main vamos a hacer referencias fxml, pero por comodidad, si está dentro, pues no lo tenemos ahí perdido, vale, pues ponedlo donde os dé la gana, venga, yo lo voy a poner dentro del propio paquete, bueno, de, sí, venga, del mismo paquete, paste, vale, 927 00:38:17,159 --> 00:38:17,960 Estoy tonta. 928 00:38:20,199 --> 00:38:27,360 Aquí tengo mi vista saludar 929 00:38:27,360 --> 00:38:29,500 FXML. Bueno, pues 930 00:38:29,500 --> 00:38:30,460 ahora mi main cambia. 931 00:38:31,559 --> 00:38:33,480 Porque ahora en mi main yo tengo que 932 00:38:33,480 --> 00:38:35,360 pasar de este root y decir, no, 933 00:38:35,820 --> 00:38:37,699 tú ahora ya no vas a usar este 934 00:38:37,699 --> 00:38:39,519 raíz. Este raíz 935 00:38:39,519 --> 00:38:41,079 que me habías puesto por defecto no vas a usar. 936 00:38:41,699 --> 00:38:43,360 Ahora vas a usar el que está en la 937 00:38:43,360 --> 00:38:45,219 vista. Entonces, 938 00:38:45,219 --> 00:38:47,480 ahora ya tenemos que cambiar esta línea 939 00:38:47,480 --> 00:38:48,960 por otra línea 940 00:38:48,960 --> 00:38:51,239 en la cual le decimos, oye 941 00:38:51,239 --> 00:38:53,420 que tu raíz, la raíz 942 00:38:53,420 --> 00:38:55,380 de tu escenario, la raíz de tu 943 00:38:55,380 --> 00:38:57,320 escenario está en el fxml 944 00:38:57,320 --> 00:38:59,719 y eso lo hacemos con una sentencia 945 00:38:59,719 --> 00:39:01,480 que vamos a copiar y pegar 946 00:39:01,480 --> 00:39:03,219 o voy a copiar yo y pegar 947 00:39:03,219 --> 00:39:04,380 y vosotros la copiáis 948 00:39:04,380 --> 00:39:07,000 eso lo vamos a hacer con esta sentencia 949 00:39:07,000 --> 00:39:10,489 ¿vale? 950 00:39:11,489 --> 00:39:12,389 con esta 951 00:39:12,389 --> 00:39:24,159 aquí 952 00:39:24,159 --> 00:39:28,219 vale 953 00:39:28,219 --> 00:39:32,800 vale, a ver 954 00:39:32,800 --> 00:39:34,519 como ahora ya 955 00:39:34,519 --> 00:39:37,420 nuestro, la raíz 956 00:39:37,420 --> 00:39:39,360 de nuestro escenario, no es ese 957 00:39:39,360 --> 00:39:41,440 border panel root que había puesto por defecto 958 00:39:41,440 --> 00:39:43,260 el plugin, ya no es ese, sino 959 00:39:43,260 --> 00:39:44,739 es lo que figura en el xml 960 00:39:44,739 --> 00:39:46,599 tenéis que cambiar 961 00:39:46,599 --> 00:39:49,179 eso por esta línea 962 00:39:49,179 --> 00:39:51,300 que os he puesto aquí 963 00:39:51,300 --> 00:39:52,760 por esta 964 00:39:52,760 --> 00:39:58,619 Claro, la ruta que 965 00:39:58,619 --> 00:40:00,800 Se llama 966 00:40:00,800 --> 00:40:03,099 En mi caso se llama 967 00:40:03,099 --> 00:40:04,519 Vista saludar 968 00:40:04,519 --> 00:40:06,460 Fxml 969 00:40:06,460 --> 00:40:08,039 Pues 970 00:40:08,039 --> 00:40:12,880 Vista saludar 971 00:40:12,880 --> 00:40:16,699 Vale, entonces 972 00:40:16,699 --> 00:40:19,119 Vale, o sea el root 973 00:40:19,119 --> 00:40:21,119 Ahora ya no es ese border pane por defecto 974 00:40:21,119 --> 00:40:21,820 Que él había hecho 975 00:40:21,820 --> 00:40:24,019 si no es el root 976 00:40:24,019 --> 00:40:25,860 ahora es un objeto padre que está 977 00:40:25,860 --> 00:40:28,019 perfectamente ya especificado en el 978 00:40:28,019 --> 00:40:30,179 fxml, entonces lo que le decimos es 979 00:40:30,179 --> 00:40:32,119 la raíz de tu escenario 980 00:40:32,119 --> 00:40:33,599 sácala del 981 00:40:33,599 --> 00:40:35,980 fxml y ya está, lo único que 982 00:40:35,980 --> 00:40:36,880 le tenemos que decir 983 00:40:36,880 --> 00:40:39,260 es decir 984 00:40:39,260 --> 00:40:40,440 cárgame 985 00:40:40,440 --> 00:40:43,860 el root desde este fichero 986 00:40:43,860 --> 00:40:46,000 vista saludar, cárgamelo mediante 987 00:40:46,000 --> 00:40:47,239 el método estático load 988 00:40:47,239 --> 00:40:49,519 de la clase fxml loader 989 00:40:49,519 --> 00:40:52,820 ¿lo habéis copiado ya? 990 00:40:53,320 --> 00:41:02,679 He puesto el nombre del fichero 991 00:41:02,679 --> 00:41:04,380 Vosotros ponéis el vuestro y ya está 992 00:41:04,380 --> 00:41:10,800 Entonces, él con el getResource 993 00:41:10,800 --> 00:41:12,500 Localiza este recurso 994 00:41:12,500 --> 00:41:13,260 Que es un archivo 995 00:41:13,260 --> 00:41:15,300 Los archivos son recursos de la aplicación 996 00:41:15,300 --> 00:41:17,179 Pues localiza el recurso 997 00:41:17,179 --> 00:41:20,679 Extrae la clase 998 00:41:20,679 --> 00:41:22,800 En la que se puede mapear 999 00:41:22,800 --> 00:41:23,739 Ese recurso 1000 00:41:23,739 --> 00:41:26,420 Que se podrá mapear 1001 00:41:26,420 --> 00:41:27,219 En una clase root 1002 00:41:27,219 --> 00:41:28,639 Que es la que nos interesa 1003 00:41:28,639 --> 00:41:31,940 y esa clase root ya se convierte en la raíz 1004 00:41:31,940 --> 00:41:33,260 de mi escenario 1005 00:41:33,260 --> 00:41:41,400 pero efectivamente 1006 00:41:41,400 --> 00:41:43,780 la clase fxml la tenemos que importar 1007 00:41:43,780 --> 00:41:49,780 no, no, no 1008 00:41:49,780 --> 00:41:51,619 no empezamos, está todo bien pensado 1009 00:41:51,619 --> 00:41:53,440 como no estamos trabajando 1010 00:41:53,440 --> 00:41:55,500 como estamos trabajando con módulos 1011 00:41:55,500 --> 00:41:56,380 con el módulo info 1012 00:41:56,380 --> 00:41:59,219 pues él no me ofrece directamente import 1013 00:41:59,219 --> 00:42:01,760 porque hay que pasar primero por el módulo info 1014 00:42:01,760 --> 00:42:03,780 el módulo info es una especie 1015 00:42:03,780 --> 00:42:06,099 de gestor de paquetes 1016 00:42:06,099 --> 00:42:07,760 entonces cuando yo uso un módulo info 1017 00:42:07,760 --> 00:42:09,800 no hago import sin más, sino que 1018 00:42:09,800 --> 00:42:11,679 dentro del módulo info tengo que poner 1019 00:42:11,679 --> 00:42:13,679 indicaciones también sobre los paquetes 1020 00:42:13,679 --> 00:42:15,019 que voy a importar 1021 00:42:15,019 --> 00:42:17,559 pero no tengo que saber de eso, ni tengo que 1022 00:42:17,559 --> 00:42:19,940 controlarlo, porque cuando yo uso 1023 00:42:19,940 --> 00:42:21,659 el módulo 1024 00:42:21,659 --> 00:42:23,639 info, él no me va a ofrecer 1025 00:42:23,639 --> 00:42:25,880 el import, pero si miráis hacia abajo, me ofrece 1026 00:42:25,880 --> 00:42:27,719 él, oye, añade 1027 00:42:27,719 --> 00:42:29,480 un requires al módulo info 1028 00:42:29,480 --> 00:42:31,659 pues ese es el que nos 1029 00:42:31,659 --> 00:42:33,599 interesa, ¿vale? entonces cuando 1030 00:42:33,599 --> 00:42:35,559 no usamos módulo info 1031 00:42:35,559 --> 00:42:37,739 ni el gestor de módulos y paquetes 1032 00:42:37,739 --> 00:42:39,619 nos ofrecerá el import, pues import 1033 00:42:39,619 --> 00:42:42,059 cuando usamos module info 1034 00:42:42,059 --> 00:42:44,400 como intermediario del gestor de paquetes 1035 00:42:44,400 --> 00:42:46,000 que no tenemos que saber 1036 00:42:46,000 --> 00:42:47,340 de esto para nada, que solo 1037 00:42:47,340 --> 00:42:50,019 pues me ofrece, oye, ¿quieres añadirlo al 1038 00:42:50,019 --> 00:42:51,920 module info como requerimiento de tu 1039 00:42:51,920 --> 00:42:54,239 aplicación? Sí, pues le hacéis 1040 00:42:54,239 --> 00:42:56,199 un requires y se va el error 1041 00:42:56,199 --> 00:43:00,420 y si entráis al 1042 00:43:00,420 --> 00:43:02,380 module info, efectivamente os ha 1043 00:43:02,380 --> 00:43:04,360 añadido este, oye que vuestro 1044 00:43:04,360 --> 00:43:06,440 proyecto requiere fxml 1045 00:43:06,440 --> 00:43:07,860 vale 1046 00:43:07,860 --> 00:43:10,619 Añadir requires 1047 00:43:10,619 --> 00:43:11,320 Y ya está 1048 00:43:11,320 --> 00:43:14,880 Y ahora ya lo importa el solito y todo 1049 00:43:14,880 --> 00:43:16,079 Lo importa el solo 1050 00:43:16,079 --> 00:43:18,699 Ahora ya se ha quitado el error 1051 00:43:18,699 --> 00:43:21,579 ¿Vale? 1052 00:43:23,119 --> 00:43:24,139 Entonces ahora mismo 1053 00:43:24,139 --> 00:43:25,420 Esto no tiene comportamiento 1054 00:43:25,420 --> 00:43:34,630 ¿Vale? 1055 00:43:37,940 --> 00:43:39,119 Y se queja 1056 00:43:39,119 --> 00:43:40,820 Me dice uy uy uy 1057 00:43:40,820 --> 00:43:42,920 ¿Qué aplicación de basura es esta? 1058 00:43:43,000 --> 00:43:44,219 Si no tienes un controlador 1059 00:43:44,219 --> 00:43:47,139 JavaFX está pensado para que le incorpores 1060 00:43:47,139 --> 00:43:48,980 un controlador, que es el que te manda 1061 00:43:48,980 --> 00:43:50,460 y te dice lo que tienes que hacer 1062 00:43:50,460 --> 00:43:52,920 entonces en Swim podríamos arrancar 1063 00:43:52,920 --> 00:43:54,960 la vista sin más, pero aquí no 1064 00:43:54,960 --> 00:43:56,880 aquí necesito tener 1065 00:43:56,880 --> 00:43:59,119 si quiero arrancar la aplicación tiene que tener su controlador 1066 00:43:59,119 --> 00:44:01,019 para hacer una evaluación de la 1067 00:44:01,019 --> 00:44:02,940 vista, pues para eso ya tenemos el Steam Builder 1068 00:44:02,940 --> 00:44:04,639 que vale para eso, que tiene mi preview 1069 00:44:04,639 --> 00:44:06,699 ¿verdad? este es mi preview 1070 00:44:06,699 --> 00:44:09,639 yo en el Steam Builder 1071 00:44:09,639 --> 00:44:10,719 tengo ya aquí un preview 1072 00:44:10,719 --> 00:44:12,059 que 1073 00:44:12,059 --> 00:44:14,739 me dice, a ver, ¿me gusta cómo me queda? 1074 00:44:14,860 --> 00:44:16,719 Sí, sí, qué bonito. Pues aquí ya 1075 00:44:16,719 --> 00:44:17,840 gestiono el tema de las vistas. 1076 00:44:18,699 --> 00:44:22,150 ¿Vale? Vale. 1077 00:44:22,349 --> 00:44:24,929 Pero en la aplicación, si quiero arrancar la aplicación, 1078 00:44:25,030 --> 00:44:26,570 el pack completo de la aplicación, tengo que 1079 00:44:26,570 --> 00:44:28,670 hacer un controlador. Bueno, pues 1080 00:44:28,670 --> 00:44:30,469 vamos a hacer un controlador. Un controlador es 1081 00:44:30,469 --> 00:44:32,369 una clase que tiene 1082 00:44:32,369 --> 00:44:34,630 los métodos con los que 1083 00:44:34,630 --> 00:44:36,369 se va a responder a los eventos. 1084 00:44:36,550 --> 00:44:38,429 Ahora mismo nosotros solo tiene que tener uno, el pulsa 1085 00:44:38,429 --> 00:44:39,989 botón ese que hemos puesto. Ya está. 1086 00:44:41,130 --> 00:44:42,409 Pues venga, vamos a hacer un controlador. 1087 00:44:42,409 --> 00:44:44,650 pues nos ponemos aquí en app saludar 1088 00:44:44,650 --> 00:44:45,909 y hacemos el controlador 1089 00:44:45,909 --> 00:44:47,889 y el controlador tiene dentro todos los métodos 1090 00:44:47,889 --> 00:44:50,050 no es como antes que hacíamos 1091 00:44:50,050 --> 00:44:51,909 un listener para cada 1092 00:44:51,909 --> 00:44:54,090 elemento o podíamos hacer un listener y si hacíamos 1093 00:44:54,090 --> 00:44:56,170 uno solo pues teníamos que distinguirlo dentro 1094 00:44:56,170 --> 00:44:57,969 aquí es mucho más sencillo 1095 00:44:57,969 --> 00:45:00,090 y Pablo está disfrutando 1096 00:45:00,090 --> 00:45:02,449 mucho y está teniendo muchos 1097 00:45:02,449 --> 00:45:04,510 extertores 1098 00:45:04,510 --> 00:45:04,989 de placer 1099 00:45:04,989 --> 00:45:05,989 vale 1100 00:45:05,989 --> 00:45:08,570 por eso claro 1101 00:45:08,570 --> 00:45:10,989 bueno 1102 00:45:10,989 --> 00:45:18,690 He sido rápida, ¿verdad? 1103 00:45:19,190 --> 00:45:19,670 Sí 1104 00:45:19,670 --> 00:45:23,789 Está muy rápida 1105 00:45:23,789 --> 00:45:25,090 Vale, vamos a hacer el controller 1106 00:45:25,090 --> 00:45:32,039 Pablo ya no va a volver 1107 00:45:32,039 --> 00:45:33,420 al swing en toda su vida 1108 00:45:33,420 --> 00:45:37,400 Vamos a hacernos una clase 1109 00:45:37,400 --> 00:45:41,340 Controller 1110 00:45:41,340 --> 00:45:46,789 vale 1111 00:45:46,789 --> 00:45:50,530 pues la clase controller 1112 00:45:50,530 --> 00:45:52,530 tiene que tener 1113 00:45:52,530 --> 00:45:53,570 a ver 1114 00:45:53,570 --> 00:45:59,949 vale, la clase controller 1115 00:45:59,949 --> 00:46:01,510 esta de aquí que yo he puesto 1116 00:46:01,510 --> 00:46:03,489 es la que tiene que tener 1117 00:46:03,489 --> 00:46:06,690 los métodos con los que yo voy a responder 1118 00:46:06,690 --> 00:46:08,889 vale, los métodos con los que yo voy a responder 1119 00:46:08,889 --> 00:46:10,030 pues venga 1120 00:46:10,030 --> 00:46:11,250 teníamos un método 1121 00:46:11,250 --> 00:46:12,110 void 1122 00:46:12,110 --> 00:46:17,289 pulsa botón 1123 00:46:17,289 --> 00:46:19,389 vale 1124 00:46:19,389 --> 00:46:21,650 no se me olvida nada verdad 1125 00:46:21,650 --> 00:46:25,659 no, tengo mi método 1126 00:46:25,659 --> 00:46:26,460 pulsa botón 1127 00:46:26,460 --> 00:46:28,679 este de aquí 1128 00:46:28,679 --> 00:46:33,570 este método en principio que va a hacer 1129 00:46:33,570 --> 00:46:35,590 va a poner en la etiqueta 1130 00:46:35,590 --> 00:46:37,449 un texto, claro 1131 00:46:37,449 --> 00:46:39,329 la etiqueta como se llama 1132 00:46:39,329 --> 00:46:41,730 el nombre se lo he puesto en el fxml 1133 00:46:41,730 --> 00:46:43,550 entonces yo claro 1134 00:46:43,550 --> 00:46:45,449 yo la puedo declarar aquí 1135 00:46:45,449 --> 00:46:47,730 que es lo que haré, tengo un objeto etiqueta 1136 00:46:47,730 --> 00:46:52,690 imaginaos 1137 00:46:52,690 --> 00:46:53,309 que hago esto 1138 00:46:53,309 --> 00:46:55,829 claro 1139 00:46:55,829 --> 00:46:57,750 tengo un objeto etiqueta 1140 00:46:57,750 --> 00:46:59,170 yo me hago el import de label 1141 00:46:59,170 --> 00:47:01,849 sí, sí, sí, del paquete 1142 00:47:01,849 --> 00:47:03,869 de controles, y ahora yo 1143 00:47:03,869 --> 00:47:06,329 me hago etiqueta 1144 00:47:06,329 --> 00:47:07,869 punto set 1145 00:47:07,869 --> 00:47:09,309 text 1146 00:47:09,309 --> 00:47:11,329 hola 1147 00:47:11,329 --> 00:47:13,769 pero claro, aquí el tema es 1148 00:47:13,769 --> 00:47:15,590 que este controlador dirá 1149 00:47:15,590 --> 00:47:17,690 pero a ver, que yo me tengo que ir a la vista 1150 00:47:17,690 --> 00:47:19,409 y la vista 1151 00:47:19,409 --> 00:47:22,170 de todas las etiquetas 1152 00:47:22,170 --> 00:47:23,989 que tienes en la vista 1153 00:47:23,989 --> 00:47:25,809 fxml, ¿a cuál de ellas te estás 1154 00:47:25,809 --> 00:47:27,809 refiriendo? Vale, pues 1155 00:47:27,809 --> 00:47:29,809 entonces, tengo que poner aquí 1156 00:47:29,809 --> 00:47:31,789 el mismo nombre que puse 1157 00:47:31,789 --> 00:47:33,570 aquí en el 1158 00:47:33,570 --> 00:47:35,269 en el label 1159 00:47:35,269 --> 00:47:37,170 o lo que es lo mismo 1160 00:47:37,170 --> 00:47:40,250 tengo que poner, si abrimos el fxml 1161 00:47:40,250 --> 00:47:41,849 que está 1162 00:47:41,849 --> 00:47:42,929 aquí 1163 00:47:42,929 --> 00:47:45,349 si abrimos el fxml 1164 00:47:45,349 --> 00:47:47,530 a la etiqueta, ¿cómo la llamamos? 1165 00:47:47,590 --> 00:47:49,849 la hemos llamado saludo, pues tenemos 1166 00:47:49,849 --> 00:47:50,849 que llamarla saludo 1167 00:47:50,849 --> 00:47:53,289 ¿vale? para que la identifique 1168 00:47:53,289 --> 00:47:53,829 como la misma 1169 00:47:53,829 --> 00:47:55,289 claro 1170 00:47:55,289 --> 00:47:57,949 ¿qué lío me estoy haciendo? 1171 00:47:58,610 --> 00:47:59,489 este no, ese es este 1172 00:47:59,489 --> 00:48:01,710 tengo que llamarla saludo, eso para empezar 1173 00:48:01,710 --> 00:48:03,409 y luego además 1174 00:48:03,409 --> 00:48:05,829 tengo que decirle al controlador 1175 00:48:05,829 --> 00:48:07,690 que este no es un objeto 1176 00:48:07,690 --> 00:48:09,989 de aquí, que yo estoy instanciando 1177 00:48:09,989 --> 00:48:11,789 sin más porque me da la gana, porque podría ser 1178 00:48:11,789 --> 00:48:13,809 yo podría declarar aquí números enteros, lo que quisiera 1179 00:48:13,809 --> 00:48:15,829 porque lo necesito, sino tengo que decirle 1180 00:48:15,829 --> 00:48:17,550 oye, esta etiqueta saludo 1181 00:48:17,550 --> 00:48:19,309 búscala en el XML 1182 00:48:19,309 --> 00:48:21,250 porque pertenece a la vista del XML 1183 00:48:21,250 --> 00:48:23,409 porque yo podría crear aquí objetos 1184 00:48:23,409 --> 00:48:24,550 si me dan la gana, ¿por qué no? 1185 00:48:24,809 --> 00:48:26,889 podría crearlos, pero tengo que decirle 1186 00:48:26,889 --> 00:48:28,650 que este no es uno que yo he creado aquí 1187 00:48:28,650 --> 00:48:30,550 porque me dé la gana para que haga cosas con él 1188 00:48:30,550 --> 00:48:32,829 porque esto es perfectamente válido 1189 00:48:32,829 --> 00:48:34,989 y esto funcionaría 1190 00:48:34,989 --> 00:48:37,590 y el controlador cuando doy a pulse botón 1191 00:48:37,590 --> 00:48:39,389 pone saludo a esta etiqueta 1192 00:48:39,389 --> 00:48:41,289 pero es que esta etiqueta no tiene que ser 1193 00:48:41,289 --> 00:48:42,610 esta local que yo he creado aquí 1194 00:48:42,610 --> 00:48:44,789 esta tiene que ser la que está en el XML 1195 00:48:44,789 --> 00:48:46,889 entonces tengo que avisarle, ojo 1196 00:48:46,889 --> 00:48:48,070 que esta es la del XML 1197 00:48:48,070 --> 00:48:54,710 Pues aviso con una etiqueta, con una anotación, perdón, que es esta. 1198 00:48:54,889 --> 00:48:55,829 La estoy poniendo bien, ¿verdad? 1199 00:48:56,010 --> 00:48:56,130 Sí. 1200 00:48:57,849 --> 00:49:01,250 Aviso con una cosa que se llama anotación. 1201 00:49:02,449 --> 00:49:05,809 ¿Recordáis cuando el override de los métodos que yo decía? 1202 00:49:05,909 --> 00:49:11,190 Esto es una información que avisa de cosas a la máquina virtual cuando ejecuta el código. 1203 00:49:11,869 --> 00:49:16,809 Pues aquí avisa de que esta etiqueta, oye, vete a buscarla a la vista para saber cuál es, 1204 00:49:16,809 --> 00:49:18,510 a la hora de ponerle el texto y todo eso. 1205 00:49:18,590 --> 00:49:19,889 No se lo pongas a una local tuya, 1206 00:49:20,050 --> 00:49:21,030 pónselo a la que está ahí. 1207 00:49:21,949 --> 00:49:25,050 Vale, entonces esto, pues habrá que importarlo, 1208 00:49:25,250 --> 00:49:25,530 de Java. 1209 00:49:25,670 --> 00:49:27,010 Aquí ya sí que nos ofrece el import, 1210 00:49:27,510 --> 00:49:28,849 porque ya hemos puesto en el módulo info 1211 00:49:28,849 --> 00:49:30,869 el require se de Java FXXNL. 1212 00:49:31,110 --> 00:49:32,869 Entonces ya te ofrece import sin problema. 1213 00:49:34,690 --> 00:49:37,429 No, esto una vez entendida la estructura básica, 1214 00:49:37,429 --> 00:49:39,110 ya es todo el rato lo mismo. 1215 00:49:39,250 --> 00:49:41,449 Tú añades ya todo lo que quieras en la vista 1216 00:49:41,449 --> 00:49:43,469 y se acabó y haces los controladores y nada más. 1217 00:49:43,469 --> 00:49:47,309 Vale, pues ya tenemos un controlador 1218 00:49:47,309 --> 00:49:48,849 Que al método pulsa botón 1219 00:49:48,849 --> 00:49:50,849 Responde poniendo en la etiqueta esto 1220 00:49:50,849 --> 00:49:53,650 ¿Esto funcionaría ya? 1221 00:49:54,170 --> 00:49:54,929 No, todavía no 1222 00:49:54,929 --> 00:49:56,630 Nos falta un paso, vamos a comprobar 1223 00:49:56,630 --> 00:49:59,530 Que mi main todavía no funciona 1224 00:49:59,530 --> 00:50:04,590 Ay, que son las 16 1225 00:50:04,590 --> 00:50:05,929 Vale, sí, sí, sí