1 00:00:00,370 --> 00:00:02,629 Venga, vamos a trabajar todos juntitos. 2 00:00:03,770 --> 00:00:09,070 Ala, nos vamos a hacer entonces un proyecto para gestionar nuestras tareas por la fecha, 3 00:00:09,650 --> 00:00:15,330 eliminar tareas, añadir tareas, visualizar información de tareas, 4 00:00:15,529 --> 00:00:17,690 cosas que se nos vayan un poquito ocurriendo sobre la marcha. 5 00:00:17,690 --> 00:00:24,690 Pero esencialmente el boceto inicial va a ser una lista con los datos de nuestras tareas. 6 00:00:24,690 --> 00:00:32,329 tareas y ya está vale para poder añadir y eliminar y tenerlas ahí añadir eliminar 7 00:00:32,329 --> 00:00:36,149 añadir eliminar y luego ya podemos ir añadiendo pues cuando la pulsa al mostrar no sé que ya 8 00:00:36,149 --> 00:00:51,369 podemos ir viendo venga pues entonces un proyecto maven por ejemplo vale el nombre de mis paquetes 9 00:00:51,369 --> 00:00:59,950 va a tener un prefijo común un segundo seguimos vale pues el proyecto cómo se va a llamar pues 10 00:00:59,950 --> 00:01:24,400 venga mis tareas lo voy a llamar yo ahora mis tareas aquí vale le voy a cambiar esto aunque 11 00:01:24,400 --> 00:01:31,120 luego con el pon se actualizó ya se pondría 25 automáticamente pero bueno le voy a cambiar la 12 00:01:31,120 --> 00:01:48,969 máquina virtual a la última mía y el nivel de compilación si en alguno de estos pasos 13 00:01:48,969 --> 00:01:53,629 ¿alguien se queda ahí parado? que me lo digo 14 00:01:53,629 --> 00:01:55,549 vale, ahora 15 00:01:55,549 --> 00:02:00,329 y esta vez lo voy a subir 16 00:02:00,329 --> 00:02:05,549 siguiente paso, si tengo un proyecto maven tengo que gestionarme 17 00:02:05,549 --> 00:02:09,909 este fichero pom para decirle a maven que librerías voy a usar 18 00:02:09,909 --> 00:02:13,870 que posibles plugins va a necesitar arrancar 19 00:02:13,870 --> 00:02:18,030 para hacer las tareas que tiene que hacer, etc. en este caso tiene que arrancar 20 00:02:18,030 --> 00:02:20,550 la mini máquina virtual 21 00:02:20,550 --> 00:02:22,409 de JavaFX 22 00:02:22,409 --> 00:02:24,810 entonces esa mini máquina virtual 23 00:02:24,810 --> 00:02:26,650 que no es la JR 24 00:02:26,650 --> 00:02:28,569 de Java, pues hay que dársela aquí 25 00:02:28,569 --> 00:02:30,750 a modo de plugin, hay que dar las dependencias, etc 26 00:02:30,750 --> 00:02:32,310 entonces todo eso 27 00:02:32,310 --> 00:02:34,729 aparte si le quiero quitar la cosa 28 00:02:34,729 --> 00:02:36,650 roja, nos acordamos que ponemos la S 29 00:02:36,650 --> 00:02:38,389 ahí, entonces todo eso 30 00:02:38,389 --> 00:02:40,469 hay que ponerlo aquí debajo 31 00:02:40,469 --> 00:02:42,629 y ya como lo tenemos ya de 32 00:02:42,629 --> 00:02:44,590 otro proyecto, pues copiamos y pegamos 33 00:02:44,590 --> 00:02:45,189 y ya está 34 00:02:45,189 --> 00:02:49,050 Entonces de otro proyecto de JavaFX 35 00:02:49,050 --> 00:02:50,810 Tengo yo ya esto 36 00:02:50,810 --> 00:02:52,409 Con las librerías 37 00:02:52,409 --> 00:02:53,409 Y con el plugin 38 00:02:53,409 --> 00:02:56,949 Entonces copio esto 39 00:02:56,949 --> 00:02:58,870 Y lo pongo aquí 40 00:02:58,870 --> 00:03:02,409 Entonces reviso que lo he copiado tiene sentido 41 00:03:02,409 --> 00:03:05,469 Le estoy diciendo que voy a usar el nivel de compilación 25 42 00:03:05,469 --> 00:03:07,810 La versión de JavaFX 25 43 00:03:07,810 --> 00:03:10,569 Las librerías tiran de esa versión 44 00:03:10,569 --> 00:03:13,490 Porque esta es una propiedad que yo he definido aquí arriba 45 00:03:13,490 --> 00:03:16,729 Y ahora ya le estoy diciendo a JavaFX 46 00:03:16,729 --> 00:03:18,889 Oye, puede que te mande a ejecutar un plugin 47 00:03:18,889 --> 00:03:21,030 Puede que te mande y que ese plugin es el 48 00:03:21,030 --> 00:03:23,210 Que lanza una aplicación JavaFX 49 00:03:23,210 --> 00:03:24,569 Ah, vale, pues dámelo 50 00:03:24,569 --> 00:03:27,229 Pues este es, vale, cuando te mande a ejecutar 51 00:03:27,229 --> 00:03:28,949 El plugin, ¿cuál va a ser 52 00:03:28,949 --> 00:03:30,949 La clase principal que arranca 53 00:03:30,949 --> 00:03:32,750 Esa aplicación JavaFX? 54 00:03:33,810 --> 00:03:35,009 Pues esta, venga 55 00:03:35,009 --> 00:03:37,069 Vale, pues esta, la dejo así y luego la pongo 56 00:03:37,069 --> 00:03:38,430 Con este nombre, si no, tengo que cambiarlo 57 00:03:38,430 --> 00:03:40,889 Ya está, venga 58 00:03:40,889 --> 00:03:43,430 Pues ya tengo esto, lo guardo 59 00:03:43,430 --> 00:03:45,370 y efectivamente compruebo 60 00:03:45,370 --> 00:03:46,449 que en mis tareas 61 00:03:46,449 --> 00:03:49,349 se acaba de crear las dependencias 62 00:03:49,349 --> 00:03:51,349 de maven, todo esto de aquí, etc 63 00:03:51,349 --> 00:03:53,569 entonces a partir de aquí 64 00:03:53,569 --> 00:03:55,349 yo ya no necesitaría internet para nada 65 00:03:55,349 --> 00:03:57,590 vale, lo digo de cara a examen si usamos 66 00:03:57,590 --> 00:03:58,110 maven 67 00:03:58,110 --> 00:04:01,169 porque ya maven ha descargado 68 00:04:01,169 --> 00:04:03,330 las librerías de su repositorio y ya las 69 00:04:03,330 --> 00:04:05,490 tiene locales, ya no hace falta nada más 70 00:04:05,490 --> 00:04:07,789 bueno 71 00:04:07,789 --> 00:04:10,669 pues ahora ya vamos a empezar a trabajar 72 00:04:10,669 --> 00:04:13,069 pues venga, nos vamos a hacer primero 73 00:04:13,069 --> 00:04:17,480 a ver, primero vamos a pensar 74 00:04:17,480 --> 00:04:18,500 ahora esta aplicación 75 00:04:18,500 --> 00:04:21,319 lo primero que tiene que pensar uno es en las entidades 76 00:04:21,319 --> 00:04:23,660 que va a usar, que cosas va a gestionar 77 00:04:23,660 --> 00:04:25,439 lo primero, antes de plantearse un main 78 00:04:25,439 --> 00:04:25,899 y nada 79 00:04:25,899 --> 00:04:28,959 bueno, pues vamos a gestionar tareas 80 00:04:28,959 --> 00:04:30,480 pues ya está, tarea 81 00:04:30,480 --> 00:04:33,660 ya me lo está diciendo la propia descripción del problema 82 00:04:33,660 --> 00:04:35,279 vamos a describir nuestra tarea 83 00:04:35,279 --> 00:04:37,220 pues vamos a tener un modelo 84 00:04:37,220 --> 00:04:38,160 con una clase de tarea 85 00:04:38,160 --> 00:04:41,420 y ahora ya vamos a pensar de esas tareas que me interesan 86 00:04:41,420 --> 00:04:42,839 lo ponemos dentro y se acabó 87 00:04:42,839 --> 00:04:45,040 vamos a hacer una cosa sencillita 88 00:04:45,040 --> 00:04:47,660 para conseguir que todo nos funcione 89 00:04:47,660 --> 00:04:49,579 si luego uno ya lo quiere ampliar y complicar 90 00:04:49,579 --> 00:04:51,519 ya lo puede hacer, una vez que tiene una pequeña 91 00:04:51,519 --> 00:04:53,360 versión de este gestor funcionando 92 00:04:53,360 --> 00:04:55,579 pues venga, nos hacemos nuestro 93 00:04:55,579 --> 00:04:57,519 paquete con el 94 00:04:57,519 --> 00:04:58,920 modelo de entidades 95 00:04:58,920 --> 00:05:05,449 este es mi paquete, es 96 00:05:05,449 --> 00:05:07,550 dam1, porque es dam1, es la 97 00:05:07,550 --> 00:05:09,490 raíz común de todos mis paquetes 98 00:05:09,490 --> 00:05:11,310 no es que es obligatorio, pero repito 99 00:05:11,310 --> 00:05:13,490 para darle un poco de profesionalidad 100 00:05:14,050 --> 00:05:15,569 modelo, y ahora me voy a hacer 101 00:05:15,569 --> 00:05:19,079 mi clase, venga, tarea 102 00:05:19,079 --> 00:05:26,269 Pues a ver, mis tareas 103 00:05:26,269 --> 00:05:28,069 Porque quiero que se caractericen 104 00:05:28,069 --> 00:05:30,810 Vale, vamos a ponerle dos o tres propiedades 105 00:05:30,810 --> 00:05:32,649 Solo por ahora, luego si hay que ampliarlo 106 00:05:32,649 --> 00:05:33,209 Se amplía 107 00:05:33,209 --> 00:05:36,389 Pues por el nombre de la tarea 108 00:05:36,389 --> 00:05:41,939 Por la descripción 109 00:05:41,939 --> 00:05:50,629 Y por la fecha 110 00:05:50,629 --> 00:05:51,329 Por ejemplo 111 00:05:51,329 --> 00:05:53,670 Fecha límite 112 00:05:53,670 --> 00:05:59,220 Vale, pues 113 00:05:59,220 --> 00:06:00,600 ¿Queréis que le pongamos un boolean? 114 00:06:01,899 --> 00:06:02,920 Vale, al final 115 00:06:02,920 --> 00:06:04,600 Nos vamos a complicar mucho la vida 116 00:06:04,600 --> 00:06:05,420 Pero bueno 117 00:06:05,420 --> 00:06:12,790 Bueno, eso depende 118 00:06:12,790 --> 00:06:14,730 Vale 119 00:06:14,730 --> 00:06:19,779 Venga, vamos a ponerle un boolean 120 00:06:19,779 --> 00:06:21,860 Para complicarnos más la vida 121 00:06:21,860 --> 00:06:23,500 Completada 122 00:06:23,500 --> 00:06:30,379 ¿Pedís mucho? 123 00:06:30,920 --> 00:06:33,000 A ver, podríamos pedir un ID 124 00:06:33,000 --> 00:06:35,800 Pero mira, vamos a dejarlo 125 00:06:35,800 --> 00:06:37,819 Con el nombre que sea el noble caber primaria 126 00:06:37,819 --> 00:06:39,899 venga, no, no te quedas a gusto sin el id 127 00:06:39,899 --> 00:06:41,759 a ver, un id 128 00:06:41,759 --> 00:06:44,079 es lo ideal, venga, pues un id 129 00:06:44,079 --> 00:06:45,759 un id 130 00:06:45,759 --> 00:06:47,779 que queréis que sea íntegre, por ejemplo 131 00:06:47,779 --> 00:06:49,620 venga 132 00:06:49,620 --> 00:06:50,660 íntegre, id 133 00:06:50,660 --> 00:06:54,139 de hecho vamos a empezar a acostumbrar 134 00:06:54,139 --> 00:06:56,220 no pasa nada porque nos empecemos a acostumbrar 135 00:06:56,220 --> 00:06:58,139 a que los numeritos 136 00:06:58,139 --> 00:06:59,959 vengan descritos por el graper 137 00:06:59,959 --> 00:07:00,839 por el envolvente 138 00:07:00,839 --> 00:07:03,740 que es quizá la tienda más habitual 139 00:07:03,740 --> 00:07:06,079 si yo tengo un entero, pues íntegre 140 00:07:06,079 --> 00:07:07,000 en vez de int 141 00:07:07,000 --> 00:07:10,379 en realidad su contenido es el mismo 142 00:07:10,379 --> 00:07:11,699 ahí van números enteros 143 00:07:11,699 --> 00:07:14,360 pero bueno, de aquí 144 00:07:14,360 --> 00:07:15,740 puedo hacer colecciones 145 00:07:15,740 --> 00:07:18,480 de ides, puedo pasarlo a métodos 146 00:07:18,480 --> 00:07:19,759 que necesitan objetos 147 00:07:19,759 --> 00:07:22,459 un primitivo no se lo puedo pasar a métodos que necesitan 148 00:07:22,459 --> 00:07:24,240 objetos, en fin, tiene sus ventajillas 149 00:07:24,240 --> 00:07:26,379 declararlo como íntegro en lugar de como 150 00:07:26,379 --> 00:07:28,300 el primitivo, al ser un objeto 151 00:07:28,300 --> 00:07:30,360 puede ser enviado a cosas 152 00:07:30,360 --> 00:07:32,439 que necesitan objetos, como las colecciones 153 00:07:32,439 --> 00:07:34,139 las famosas landas, etc 154 00:07:34,139 --> 00:07:35,980 vale, pues ya está 155 00:07:35,980 --> 00:07:38,360 Ya no vamos a meter más, por mucho que pidáis 156 00:07:38,360 --> 00:07:43,620 Bueno, el Boolean quizá no está 157 00:07:43,620 --> 00:07:45,220 Nada, el Boolean 158 00:07:45,220 --> 00:07:47,740 Suena más feo 159 00:07:47,740 --> 00:07:52,860 Eso acaba de decir él 160 00:07:52,860 --> 00:07:53,759 Pero 161 00:07:53,759 --> 00:07:56,519 A ver, lo he puesto así 162 00:07:56,519 --> 00:07:58,339 Es que el Boolean, el envolvente Boolean 163 00:07:58,339 --> 00:07:59,540 No te creas que se usa tanto 164 00:07:59,540 --> 00:08:01,660 No, porque 165 00:08:01,660 --> 00:08:04,459 Rara vez se hacen colecciones de Boolean 166 00:08:04,459 --> 00:08:05,100 Por ejemplo 167 00:08:05,100 --> 00:08:07,680 rara vez es el boolean 168 00:08:07,680 --> 00:08:09,819 un parámetro de una clase genérica 169 00:08:09,819 --> 00:08:11,759 muy rara vez, los números sí 170 00:08:11,759 --> 00:08:13,199 entonces 171 00:08:13,199 --> 00:08:15,959 vamos a dejarlo así 172 00:08:15,959 --> 00:08:16,699 así variamos 173 00:08:16,699 --> 00:08:18,959 aparte que si realmente no 174 00:08:18,959 --> 00:08:22,199 es que a la vista, yo pongo boolean en mayúscula 175 00:08:22,199 --> 00:08:23,060 y se me hace raro 176 00:08:23,060 --> 00:08:26,240 imagino que habrá una razón y es que prácticamente nunca lo he visto así 177 00:08:26,240 --> 00:08:28,000 venga 178 00:08:28,000 --> 00:08:30,360 vamos a hacernos los getter y los ether 179 00:08:30,360 --> 00:08:40,269 venga, por ahora 180 00:08:40,269 --> 00:08:41,710 vamos a dejarla 181 00:08:41,710 --> 00:08:43,549 por ir rápidos 182 00:08:43,549 --> 00:08:45,710 sin constructores 183 00:08:45,710 --> 00:08:47,690 con lo cual se le queda uno sin parámetros 184 00:08:47,690 --> 00:08:48,789 y ya está 185 00:08:48,789 --> 00:08:51,590 y por ahora 186 00:08:51,590 --> 00:08:53,629 vamos a dejarla, a ver, como el jasco de 187 00:08:53,629 --> 00:08:54,730 equals no nos cuesta nada 188 00:08:54,730 --> 00:08:57,710 hacerlo, vamos a hacerlo un jasco de equals 189 00:08:57,710 --> 00:08:59,029 con el id 190 00:08:59,029 --> 00:09:14,350 vale, bueno pues por ahora 191 00:09:14,350 --> 00:09:15,950 este va a ser nuestro único modelo 192 00:09:15,950 --> 00:09:17,169 una única clase 193 00:09:17,169 --> 00:09:20,169 este modelo se podría 194 00:09:20,169 --> 00:09:22,129 complicar, podría ser que una de las 195 00:09:22,129 --> 00:09:23,450 propiedades de mi tarea 196 00:09:23,450 --> 00:09:26,730 a su vez fuera un objeto 197 00:09:26,730 --> 00:09:28,809 que necesitara 198 00:09:28,809 --> 00:09:29,830 una entidad aparte 199 00:09:29,830 --> 00:09:32,350 por ejemplo, una de las propiedades de tarea 200 00:09:32,350 --> 00:09:34,309 pues podría ser, yo que sé, equipo 201 00:09:34,309 --> 00:09:36,470 refiriéndose al equipo que lleva 202 00:09:36,470 --> 00:09:38,330 la tarea, entonces equipo sería otra clase 203 00:09:38,330 --> 00:09:40,490 que tendría participantes, no sé qué 204 00:09:40,490 --> 00:09:42,730 pero por ahora vamos a dejarlo así 205 00:09:42,730 --> 00:09:44,929 con lo cual es un modelo de clases de una sola entidad 206 00:09:44,929 --> 00:09:46,590 venga 207 00:09:46,590 --> 00:09:47,070 ahora 208 00:09:47,070 --> 00:09:50,029 ahora ya vamos a 209 00:09:50,029 --> 00:09:54,230 arrancar, hacer nuestra aplicación 210 00:09:54,230 --> 00:09:56,250 nuestra aplicación, aunque no 211 00:09:56,250 --> 00:09:57,750 tenemos hecho un análisis muy 212 00:09:57,750 --> 00:10:00,009 pormenorizado y nada de eso, vamos a ir 213 00:10:00,009 --> 00:10:00,909 haciendo sobre la mancha 214 00:10:00,909 --> 00:10:03,990 ahora mismo la idea que nos hacemos es 215 00:10:03,990 --> 00:10:06,090 nuestra aplicación va a tener 216 00:10:06,090 --> 00:10:08,129 una tabla donde se puedan 217 00:10:08,129 --> 00:10:09,289 ver las tareas 218 00:10:09,289 --> 00:10:12,029 y yo pueda añadir tareas nuevas 219 00:10:12,029 --> 00:10:14,029 a través de esa tabla o eliminar 220 00:10:14,029 --> 00:10:16,090 tareas nuevas o visualizar 221 00:10:16,090 --> 00:10:17,490 los datos de la tarea pinchando 222 00:10:17,490 --> 00:10:19,870 ¿os parece que nos quedemos ahora con eso? 223 00:10:20,029 --> 00:10:21,710 una tablita con las tareas 224 00:10:21,710 --> 00:10:23,289 que yo ya tengo en un momento dado 225 00:10:23,289 --> 00:10:25,490 que puedo haber cargado de un fichero o de donde sea 226 00:10:25,490 --> 00:10:27,429 un botón para agregar tarea 227 00:10:27,429 --> 00:10:28,970 uno para eliminar 228 00:10:28,970 --> 00:10:31,190 y luego que cuando yo pulse en la tarea 229 00:10:31,190 --> 00:10:33,710 me aparezcan los datos de la tarea al completo 230 00:10:33,710 --> 00:10:34,889 porque en la tabla a lo mejor 231 00:10:34,889 --> 00:10:37,190 yo fijo que me aparezca el nombre 232 00:10:37,190 --> 00:10:39,490 bueno vamos a ponerle que aparezcan dos campos 233 00:10:39,490 --> 00:10:41,269 para que sea una tabla de verdad y no solo 234 00:10:41,269 --> 00:10:42,649 un desvío 235 00:10:42,649 --> 00:10:46,320 como para 236 00:10:46,320 --> 00:10:50,820 para marcarla como completada 237 00:10:50,820 --> 00:10:57,039 seleccionas la tarea 238 00:10:57,039 --> 00:11:00,360 y luego sí, se podría hacer de muchas formas 239 00:11:00,360 --> 00:11:02,740 poner un checkbox o un botoncito que sea 240 00:11:02,740 --> 00:11:05,120 completar tarea, entonces ese botón completar 241 00:11:05,120 --> 00:11:08,019 la que esté seleccionada en la tabla 242 00:11:08,019 --> 00:11:10,480 te la marca como tú, por ejemplo 243 00:11:10,480 --> 00:11:13,200 porque tú en la tabla vas a poder seleccionar una 244 00:11:13,200 --> 00:11:19,759 vale, pues vamos a arrancar por ahora con eso a ver que nos sale 245 00:11:19,759 --> 00:11:23,399 con esas funcionalidades, pues entonces vamos a hacernos 246 00:11:23,399 --> 00:11:27,179 Bueno, vamos a dejarnos el main 247 00:11:27,179 --> 00:11:29,220 Y luego ya hacemos la vista 248 00:11:29,220 --> 00:11:31,279 Y todo, el fxml, etc 249 00:11:31,279 --> 00:11:33,179 Entonces 250 00:11:33,179 --> 00:11:35,299 Aquí tendremos 251 00:11:35,299 --> 00:11:36,960 Es punto 252 00:11:36,960 --> 00:11:39,000 Uno punto app 253 00:11:39,000 --> 00:11:41,480 Aquí va a estar la clase main 254 00:11:41,480 --> 00:11:49,320 Mi clase main 255 00:11:49,320 --> 00:11:53,549 Que tiene la aplicación 256 00:11:53,549 --> 00:11:55,289 Vale, entonces 257 00:11:55,289 --> 00:11:58,090 Esta es la que tiene 258 00:11:58,090 --> 00:11:59,450 El land 259 00:11:59,450 --> 00:11:59,929 Uf 260 00:11:59,929 --> 00:12:13,659 y esta es la que tiene que heredar de application 261 00:12:13,659 --> 00:12:19,960 para poder ser arrancada por el plugin de JavaFX 262 00:12:19,960 --> 00:12:28,480 entonces al arrancar de application 263 00:12:28,480 --> 00:12:30,440 tiene que implementar el método start 264 00:12:30,440 --> 00:12:37,299 que es el que la mini máquina virtual de JavaFX ejecuta 265 00:12:37,299 --> 00:12:42,700 ejecuta, este, vale, entonces aquí este método star 266 00:12:42,700 --> 00:12:46,360 si habíamos separado vista de comportamiento 267 00:12:46,360 --> 00:12:49,659 este método star se quedaba en cargar la vista 268 00:12:49,659 --> 00:12:54,440 fxml y ya está, y esa vista fxml ya tiene asociada al 269 00:12:54,440 --> 00:12:57,919 controller que hacemos aparte y se acabó, entonces 270 00:12:57,919 --> 00:13:01,820 pues aquí para cargar un fxml 271 00:13:01,820 --> 00:13:06,159 ya ese código ya lo podemos copiar y pegar 272 00:13:06,159 --> 00:13:17,309 de otros, que era esto, y aquí 273 00:13:17,309 --> 00:13:21,070 pues venga nuestra vista, la vamos a llamar como queramos llamarla 274 00:13:21,070 --> 00:13:29,100 tareas, entonces esa vista que nos falta por construir 275 00:13:29,100 --> 00:13:36,360 se cargará en esta escena, y ahora esta escena 276 00:13:36,360 --> 00:13:39,360 se fijará a nuestra ventana principal 277 00:13:39,360 --> 00:13:44,740 o nuestro stage, gestor tareas 278 00:13:44,740 --> 00:13:51,259 y haremos visibles stage y ya está, entonces 279 00:13:51,259 --> 00:13:55,039 necesitamos hacer 280 00:13:55,039 --> 00:13:55,899 este de aquí 281 00:13:55,899 --> 00:13:57,139 vale 282 00:13:57,139 --> 00:14:01,100 pues para que encuentre 283 00:14:01,100 --> 00:14:02,340 el método getResource 284 00:14:02,340 --> 00:14:03,539 de la clase 285 00:14:03,539 --> 00:14:05,399 encuentre esta 286 00:14:05,399 --> 00:14:07,919 este fichero de aquí 287 00:14:07,919 --> 00:14:09,500 tiene que estar en el resources 288 00:14:09,500 --> 00:14:10,480 en una ruta del path 289 00:14:10,480 --> 00:14:11,120 tiene que estar 290 00:14:11,120 --> 00:14:12,679 el resources es una del path 291 00:14:12,679 --> 00:14:14,480 y es la que está pensada 292 00:14:14,480 --> 00:14:15,559 por organización 293 00:14:15,559 --> 00:14:16,639 este no es 294 00:14:16,639 --> 00:14:17,879 por organización 295 00:14:17,879 --> 00:14:19,419 para tener los ficheros de recursos 296 00:14:19,419 --> 00:14:23,879 Luego en mis tareas aquí vamos a hacer ese 297 00:14:23,879 --> 00:14:29,220 New file 298 00:14:29,220 --> 00:14:35,000 Tareas.fxml 299 00:14:35,000 --> 00:14:41,009 Lo he guardado en test 300 00:14:41,009 --> 00:14:42,409 Pues porque me habré equivocado 301 00:14:42,409 --> 00:14:43,649 Sí, me he equivocado 302 00:14:43,649 --> 00:14:44,830 Este va aquí 303 00:14:44,830 --> 00:14:48,710 Ahí, srcmail resources 304 00:14:48,710 --> 00:14:53,080 Vale, pues entonces 305 00:14:53,080 --> 00:14:55,240 Esto ya lo editamos con el Steam Builder 306 00:14:55,240 --> 00:14:56,419 O abrimos el Steam Builder 307 00:14:56,419 --> 00:14:57,279 Y lo abrimos 308 00:14:57,279 --> 00:15:04,919 o como está integrado con el eclipse 309 00:15:04,919 --> 00:15:07,159 pues lo abrimos desde aquí, da igual como sea 310 00:15:07,159 --> 00:15:13,700 vale, pues bueno, aquí ya podemos empezar a tomar decisiones 311 00:15:13,700 --> 00:15:15,700 venga, ¿a dónde vamos a colocar el table view? 312 00:15:15,759 --> 00:15:16,399 pues en un panel 313 00:15:16,399 --> 00:15:18,559 en el panel que queramos 314 00:15:18,559 --> 00:15:22,039 en cualquier panel, cada panel te restringe 315 00:15:22,039 --> 00:15:24,840 cómo colocar los componentes 316 00:15:24,840 --> 00:15:29,970 cada panel se supone que se adapta a un tipo de aplicación 317 00:15:29,970 --> 00:15:32,590 ¿vale? porque cada aplicación 318 00:15:32,590 --> 00:15:34,470 cada tipo de aplicación como que tiene asociada 319 00:15:34,470 --> 00:15:36,149 una vista, por costumbre, por hábito 320 00:15:36,149 --> 00:15:37,710 bueno 321 00:15:37,710 --> 00:15:40,669 yo voy a poner este porque en este pongo los elementos 322 00:15:40,669 --> 00:15:41,409 donde me dé la gana 323 00:15:41,409 --> 00:15:43,309 sin restricciones 324 00:15:43,309 --> 00:15:46,669 pero eso no significa que sea 325 00:15:46,669 --> 00:15:47,389 el mejor 326 00:15:47,389 --> 00:15:51,360 para nada 327 00:15:51,360 --> 00:15:55,440 te permite colocar los elementos donde te dé la gana 328 00:15:55,440 --> 00:15:56,480 sin restricciones 329 00:15:56,480 --> 00:15:59,360 los otros pues habilitan como espacios 330 00:15:59,360 --> 00:16:01,559 el border pane te habilita 5 espacios 331 00:16:01,559 --> 00:16:03,779 te hace como una especie de organización 332 00:16:03,779 --> 00:16:06,480 y tiene sentido, pues aquí organiza los contenidos 333 00:16:06,480 --> 00:16:08,139 aquí los índices, aquí no sé qué 334 00:16:08,139 --> 00:16:10,200 entonces si tú tienes ya una idea 335 00:16:10,200 --> 00:16:12,299 de aplicación con un aspecto, pues coge 336 00:16:12,299 --> 00:16:14,200 un panel que reproduzca un poco 337 00:16:14,200 --> 00:16:14,940 ese aspecto 338 00:16:14,940 --> 00:16:18,139 pero bueno, aquí no hay tampoco 339 00:16:18,139 --> 00:16:21,259 lo que está bien y lo que está mal 340 00:16:21,259 --> 00:16:24,299 uy, ¿qué hago yo? me he puesto un panel dentro de un panel 341 00:16:24,299 --> 00:16:25,559 perdón, vale 342 00:16:25,559 --> 00:16:27,840 venga, pues ahora 343 00:16:27,840 --> 00:16:30,139 controles, ¿qué vamos a necesitar? 344 00:16:30,620 --> 00:16:31,460 nuestra tabla 345 00:16:31,460 --> 00:16:34,159 Pues nos vamos a controles 346 00:16:34,159 --> 00:16:37,830 Una tabla 347 00:16:37,830 --> 00:16:39,470 Para ver cositas 348 00:16:39,470 --> 00:16:42,269 Esta, venga 349 00:16:42,269 --> 00:16:43,389 Una tabla 350 00:16:43,389 --> 00:16:45,970 La verdad es que deberíamos haber arrancado con el list view 351 00:16:45,970 --> 00:16:48,250 Es un poquito más sencillo 352 00:16:48,250 --> 00:16:49,789 Pero claro, sois tan listos que he dicho 353 00:16:49,789 --> 00:16:52,169 Que arranque con el table view directamente 354 00:16:52,169 --> 00:16:53,570 Y ya está 355 00:16:53,570 --> 00:16:55,210 Venga 356 00:16:55,210 --> 00:16:57,409 Pues esta es mi tabla 357 00:16:57,409 --> 00:17:00,789 Esta tabla me ofrece dos columnitas 358 00:17:00,789 --> 00:17:02,269 Esto de aquí 359 00:17:02,269 --> 00:17:03,529 lo quito, que me sobra 360 00:17:03,529 --> 00:17:05,730 vale, le ponemos 361 00:17:05,730 --> 00:17:08,369 más columnas o no, porque yo 362 00:17:08,369 --> 00:17:10,349 entiendo que tú aquí le puedes cambiar el número 363 00:17:10,349 --> 00:17:11,589 de columnas, digo yo, ¿no? 364 00:17:14,130 --> 00:17:16,210 sí, aquí le podrás añadir columna 365 00:17:16,210 --> 00:17:20,130 a ver, duplicar 366 00:17:20,789 --> 00:17:22,630 si yo le doy a 367 00:17:22,630 --> 00:17:34,420 no sé, se me ha quedado ahí tonto 368 00:17:34,420 --> 00:17:38,299 ay 369 00:17:38,299 --> 00:17:39,839 se ha muerto 370 00:17:39,839 --> 00:17:51,920 ay 371 00:17:51,920 --> 00:17:54,519 No responde, ¿cuánto tiempo espero? 372 00:17:59,400 --> 00:17:59,660 ¿Qué? 373 00:18:04,059 --> 00:18:07,220 Bueno, le vamos a dejar dos columnas 374 00:18:07,220 --> 00:18:10,299 Y así no se nos 375 00:18:10,299 --> 00:18:14,579 A ver, administrador de tareas 376 00:18:14,579 --> 00:18:16,279 Steam Builder, ¿dónde lo tengo? 377 00:18:16,279 --> 00:18:16,539 Aquí 378 00:18:16,539 --> 00:18:28,430 A ver, arrancamos otra vez 379 00:18:28,430 --> 00:18:48,180 Vale, pues a ver 380 00:18:48,180 --> 00:18:50,299 Controles, una tablita 381 00:18:50,299 --> 00:19:05,680 Venga, le vamos a dejar dos columnas 382 00:19:05,680 --> 00:19:08,420 Y así no tentamos a la suerte 383 00:19:08,420 --> 00:19:12,099 Se queda como tarea para vosotros 384 00:19:12,099 --> 00:19:13,920 Pues como añadirle más columnas 385 00:19:13,920 --> 00:19:15,500 Sin que se cuelgue, etc, etc 386 00:19:15,500 --> 00:19:18,059 Vale 387 00:19:18,059 --> 00:19:20,519 entonces vamos a mostrar solo 388 00:19:20,519 --> 00:19:22,460 dos datos de la tarea, el resto 389 00:19:22,460 --> 00:19:24,160 los podemos mostrar pinchando 390 00:19:24,160 --> 00:19:26,079 que se muestre el resto, vale 391 00:19:26,079 --> 00:19:28,759 entonces primero, a la tarea 392 00:19:28,759 --> 00:19:30,819 como segura, perdón, a la tabla 393 00:19:30,819 --> 00:19:32,460 como seguramente 394 00:19:32,460 --> 00:19:34,619 vamos a tener que acceder 395 00:19:34,619 --> 00:19:36,519 a ella desde código, antes que nada 396 00:19:36,519 --> 00:19:38,440 vamos a darle un nombrecito a la tabla 397 00:19:38,440 --> 00:19:39,880 lo que es a la tabla 398 00:19:39,880 --> 00:19:41,880 a la table view vamos a darle un nombrecito 399 00:19:41,880 --> 00:19:44,960 pues venga, llamadla como queréis, tabla 400 00:19:44,960 --> 00:19:45,359 vale 401 00:19:45,359 --> 00:19:55,099 a ver, las columnas 402 00:19:55,099 --> 00:19:57,039 la columna 1 403 00:19:57,039 --> 00:19:59,440 en properties 404 00:19:59,440 --> 00:20:01,160 el texto C1 no nos gusta 405 00:20:01,160 --> 00:20:03,319 el texto C1 406 00:20:03,319 --> 00:20:04,400 abrís properties 407 00:20:04,400 --> 00:20:07,140 vale, no confundáis 408 00:20:07,140 --> 00:20:09,259 la pestaña properties que se refiere 409 00:20:09,259 --> 00:20:11,099 al aspecto, lo que yo voy a ver 410 00:20:11,099 --> 00:20:13,119 con la pestaña 411 00:20:13,119 --> 00:20:14,740 code, de abajo 412 00:20:14,740 --> 00:20:17,000 que se refiere a los nombres de variable 413 00:20:17,000 --> 00:20:19,299 etcétera, vale, no confundáis las dos pestañas 414 00:20:19,299 --> 00:20:21,119 propiedades es todo lo 415 00:20:21,119 --> 00:20:23,200 relacionado con lo que yo voy a ver. No tiene que ver 416 00:20:23,200 --> 00:20:25,119 con Java. Code 417 00:20:25,119 --> 00:20:27,140 es su 418 00:20:27,140 --> 00:20:29,180 punto de enganche con 419 00:20:29,180 --> 00:20:31,240 Java. Bueno, pues en propiedades 420 00:20:31,240 --> 00:20:32,660 ver C1 no me gusta nada. 421 00:20:33,799 --> 00:20:35,059 ¿Qué queremos poner ahí? 422 00:20:35,099 --> 00:20:36,400 ¿El nombre de la tarea, por ejemplo? 423 00:20:37,579 --> 00:20:39,279 Nombre y fecha. Perfecto. Muy bien. 424 00:20:39,859 --> 00:20:41,140 Además, nos viene muy bien 425 00:20:41,140 --> 00:20:43,079 la fecha porque va a tener que hacer un toString 426 00:20:43,079 --> 00:20:45,519 porque el local date... 427 00:20:45,519 --> 00:20:47,480 Venga, nombre. Vamos a poner mayúscula 428 00:20:47,480 --> 00:20:54,369 y el campo 429 00:20:54,369 --> 00:20:56,250 2, fecha. 430 00:20:56,329 --> 00:20:57,589 Vale 431 00:20:57,589 --> 00:20:59,230 A ver 432 00:20:59,230 --> 00:21:05,019 ¿Y esto no lo puedo centrar? 433 00:21:12,579 --> 00:21:13,940 El que dice más grande 434 00:21:13,940 --> 00:21:19,549 A ver, ahí 435 00:21:19,549 --> 00:21:21,049 ¿Qué me he pasado? Vale, vale 436 00:21:21,049 --> 00:21:23,490 Vale, a ver 437 00:21:23,490 --> 00:21:24,710 No seáis tan tan tan tan 438 00:21:24,710 --> 00:21:27,369 Cañeros, por Dios 439 00:21:27,369 --> 00:21:30,250 Que tengo que hablar y hacer las cosas a la vez 440 00:21:30,250 --> 00:21:31,230 Y aprenderlas 441 00:21:31,230 --> 00:21:32,750 Venga, pues ya tenemos las dos 442 00:21:32,750 --> 00:21:35,309 A ver, de nuevo intuimos que al campo 443 00:21:35,309 --> 00:21:37,170 voy a tener que acceder de forma separada 444 00:21:37,170 --> 00:21:38,430 desde Java 445 00:21:38,430 --> 00:21:41,069 entonces tiene sentido que en la pestaña code 446 00:21:41,069 --> 00:21:43,170 yo ponga algo aquí 447 00:21:43,170 --> 00:21:45,109 ¿verdad? para que este 448 00:21:45,109 --> 00:21:47,150 campo de la tabla tenga un nombre Java 449 00:21:47,150 --> 00:21:48,869 porque aquí varía un dato 450 00:21:48,869 --> 00:21:50,589 en la otra columna va a ir otro 451 00:21:50,589 --> 00:21:52,710 entonces desde Java tiene sentido que ahí 452 00:21:52,710 --> 00:21:54,569 tenga yo que meter cositas, luego que eso 453 00:21:54,569 --> 00:21:55,769 tenga un nombre de variable 454 00:21:55,769 --> 00:21:59,309 pues venga, a este le vamos a llamar 455 00:21:59,309 --> 00:22:01,289 ¿cómo le llamamos? 456 00:22:01,369 --> 00:22:02,309 nombre por ejemplo 457 00:22:02,309 --> 00:22:04,750 col nombre 458 00:22:04,750 --> 00:22:19,000 Y a fecha la vamos a llamar colfecha 459 00:22:19,000 --> 00:22:27,000 Ya que estamos, vamos a avanzar aquí el nombre de mi controlador 460 00:22:27,000 --> 00:22:33,460 Vamos a hacer un controlador que va a estar en es.dem1.paquete 461 00:22:33,460 --> 00:22:37,779 Controller.controller 462 00:22:37,779 --> 00:22:42,269 Ese va a ser nuestro controlador 463 00:22:42,269 --> 00:22:43,549 que habrá que hacer 464 00:22:43,549 --> 00:22:46,849 además en la vista 465 00:22:46,849 --> 00:22:48,730 que más cosas 466 00:22:48,730 --> 00:22:49,970 necesitamos, hemos dicho 467 00:22:49,970 --> 00:22:52,829 dos botoncitos para añadir 468 00:22:52,829 --> 00:22:54,130 y eliminar, vale 469 00:22:54,130 --> 00:22:56,869 pues venga, vamos a hacer 470 00:22:56,869 --> 00:22:59,130 un botón 471 00:22:59,130 --> 00:23:01,170 butón 472 00:23:01,170 --> 00:23:04,470 butón, butón 473 00:23:04,470 --> 00:23:07,650 aquí un butón 474 00:23:07,650 --> 00:23:10,029 vale, ni ponemos colores 475 00:23:10,029 --> 00:23:11,950 ni cosas, porque luego le podemos meter un 476 00:23:11,950 --> 00:23:13,950 CSS y el CSS ya 477 00:23:13,950 --> 00:23:15,809 lo cambia como le dé la gana 478 00:23:15,809 --> 00:23:18,130 que luego cambiamos el CSS, pues cambia todo 479 00:23:18,130 --> 00:23:20,029 eso es mucho mejor 480 00:23:20,029 --> 00:23:21,990 separar el estilo 481 00:23:21,990 --> 00:23:24,309 que ponernos aquí a fijar 482 00:23:24,309 --> 00:23:25,390 mediante propiedades 483 00:23:25,390 --> 00:23:28,089 los colores y las formas 484 00:23:28,089 --> 00:23:30,170 o sea, uno podría ir fijando 485 00:23:30,170 --> 00:23:31,930 aquí en properties los colorcitos 486 00:23:31,930 --> 00:23:33,069 el tamaño del texto 487 00:23:33,069 --> 00:23:35,869 y eso va a generar una serie de código 488 00:23:35,869 --> 00:23:38,069 a través de fxml 489 00:23:38,069 --> 00:23:40,269 pero hasta eso lo podemos separar 490 00:23:40,269 --> 00:23:42,089 podemos hacer una hoja de estilo 491 00:23:42,089 --> 00:23:44,029 CSS, cargar la hoja 492 00:23:44,029 --> 00:23:45,910 de estilo, que queremos cambiar 493 00:23:45,910 --> 00:23:47,930 los colores y los tipos de letra, pues cambiamos 494 00:23:47,930 --> 00:23:50,069 la CSS y ya está, no tenemos que venir aquí 495 00:23:50,069 --> 00:23:51,690 a cambiar el fxml 496 00:23:51,690 --> 00:23:54,450 venga, pues este botón 497 00:23:54,450 --> 00:24:01,779 el texto que va a mostrar va a ser 498 00:24:01,779 --> 00:24:03,619 añadir tarea 499 00:24:03,619 --> 00:24:09,109 bueno, como no se arranca 500 00:24:09,109 --> 00:24:11,289 en español, pues vamos a terminar en español 501 00:24:11,289 --> 00:24:13,269 añadir 502 00:24:13,269 --> 00:24:15,450 tarea y aquí un botón 503 00:24:17,210 --> 00:24:40,700 Vale, por si acaso hacemos lo de, bueno no hace falta, iba a decir darle un nombre de variable Java al botón, es muy raro que desde Java necesitemos acceder al nombre a este botón directamente, entonces es que si yo tengo el Action Even de ahí puedo sacar el texto que hay encima, entonces no me hace falta realmente sacar la variable. 504 00:24:40,700 --> 00:25:16,589 Nos ponemos otro por aquí y a este le ponemos borrar tarea, eliminar tarea, por ejemplo, vale, entonces vamos a ir avanzando los nombres de los métodos con los que se va a responder a estos componentes, a ver, podemos hacer para practicar con lo del event del otro día, añadir tarea y eliminar tarea, 505 00:25:16,910 --> 00:25:19,730 vamos a hacer que respondan 506 00:25:19,730 --> 00:25:21,789 con el mismo método y luego ese método 507 00:25:21,789 --> 00:25:23,730 que distinga dentro, que botón es el que lo 508 00:25:23,730 --> 00:25:25,930 llamó, vale, entonces añadir 509 00:25:25,930 --> 00:25:27,809 tarea, nos vamos a code 510 00:25:27,809 --> 00:25:29,769 y el onAction 511 00:25:29,769 --> 00:25:31,890 que es su evento por defecto 512 00:25:31,890 --> 00:25:33,650 pues, como 513 00:25:33,650 --> 00:25:34,630 llamamos a ese método 514 00:25:34,630 --> 00:25:37,630 opera tarea, yo que sé, porque 515 00:25:37,630 --> 00:25:39,730 es tanto añadir o eliminar en función de eso 516 00:25:39,730 --> 00:25:43,569 acción tarea, venga, vale 517 00:25:43,569 --> 00:25:45,589 me ha gustado, bueno, no sé 518 00:25:45,589 --> 00:25:47,630 si me ha gustado mucho, pero así se va a quedar 519 00:25:47,630 --> 00:25:52,470 acción tarea, vale, que puede ser añadir o puede ser eliminar 520 00:25:52,470 --> 00:25:56,490 en función del botón que hayamos pulsado, entonces añadir tarea on action 521 00:25:56,490 --> 00:26:00,730 tendrá acción tarea y eliminar tarea tendrá 522 00:26:00,730 --> 00:26:03,730 en el on action el mismo, acción tarea 523 00:26:03,730 --> 00:26:08,250 hemos dicho, acción tarea, vale 524 00:26:08,250 --> 00:26:12,809 y la tabla va a tener evento, hemos dicho que también, porque cuando pulsemos 525 00:26:12,809 --> 00:26:16,390 en una tarea queremos que se abra algo 526 00:26:16,390 --> 00:26:18,190 o pase algo para ver el resto 527 00:26:18,190 --> 00:26:19,970 de los datos, porque aquí solamente vemos 528 00:26:19,970 --> 00:26:21,990 nombre y fecha, si queremos ver 529 00:26:21,990 --> 00:26:23,849 el estado o lo que sea 530 00:26:23,849 --> 00:26:25,890 vamos a tener que hacer algo, pues venga 531 00:26:25,890 --> 00:26:28,150 vamos a ponerle también un evento lo que es a la propia tabla 532 00:26:28,150 --> 00:26:30,410 entonces en la propia 533 00:26:30,410 --> 00:26:31,529 tabla abrimos el code 534 00:26:31,529 --> 00:26:34,109 veis la tabla es un ejemplo de componente 535 00:26:34,109 --> 00:26:36,130 que no tiene el onAction, no tiene evento 536 00:26:36,130 --> 00:26:37,150 por defecto 537 00:26:37,150 --> 00:26:40,230 el onAction lo tienen solo algunos componentes 538 00:26:40,230 --> 00:26:41,930 el button, el textarea, los que tienen 539 00:26:41,930 --> 00:26:44,029 una acción habitual siempre, pues tú con el 540 00:26:44,029 --> 00:26:45,509 botón normalmente pulsas y ya 541 00:26:45,509 --> 00:26:52,009 ¿Te sale un action en la tabla? 542 00:26:55,509 --> 00:26:56,890 A mí no me sale un action 543 00:26:56,890 --> 00:27:00,529 Pero ese no es un action 544 00:27:00,529 --> 00:27:02,109 Ese es otro evento distinto 545 00:27:02,109 --> 00:27:03,970 A ver 546 00:27:03,970 --> 00:27:08,690 La mejor manera de ver si tengo seleccionada la tabla 547 00:27:08,690 --> 00:27:10,730 Es aquí en la jerarquía 548 00:27:10,730 --> 00:27:11,750 Aquí 549 00:27:11,750 --> 00:27:13,769 Vale 550 00:27:13,769 --> 00:27:16,450 vale, onAction no tiene 551 00:27:16,450 --> 00:27:17,630 vale 552 00:27:17,630 --> 00:27:19,529 entonces 553 00:27:19,529 --> 00:27:22,470 pues que evento decido capturar, hemos dicho que 554 00:27:22,470 --> 00:27:24,009 cuando yo pulse en el ratón 555 00:27:24,009 --> 00:27:26,069 pues vámonos a los eventos de ratón 556 00:27:26,069 --> 00:27:28,609 eventos de ratón 557 00:27:28,609 --> 00:27:29,670 pues yo busco aquí 558 00:27:29,670 --> 00:27:32,630 eventos de teclado, eventos de ratón 559 00:27:32,630 --> 00:27:34,309 aquí, onMouseClick 560 00:27:34,309 --> 00:27:35,089 pues este 561 00:27:35,089 --> 00:27:38,710 pues cuando yo haga click con el mouse 562 00:27:38,710 --> 00:27:39,730 en la tabla 563 00:27:39,730 --> 00:27:42,470 se va a llamar a un método del controller que sea 564 00:27:42,470 --> 00:27:44,349 mostrar datos, por ejemplo. 565 00:27:47,640 --> 00:27:48,640 Mostrar tarea, venga. 566 00:27:49,359 --> 00:27:50,059 Mostrar tarea. 567 00:27:55,279 --> 00:27:55,460 ¿Eh? 568 00:27:58,200 --> 00:27:59,579 Es que donde tú hagas clic 569 00:27:59,579 --> 00:28:01,619 se va a quedar seleccionada. Es como el 570 00:28:01,619 --> 00:28:03,599 combo box. En el combo box cuando 571 00:28:03,599 --> 00:28:04,359 hacíamos clic 572 00:28:04,359 --> 00:28:07,420 estábamos haciendo clic en uno que se quedaba 573 00:28:07,420 --> 00:28:09,559 seleccionado, con lo cual luego podíamos sacarlo con 574 00:28:09,559 --> 00:28:11,539 el get selected item o con el que 575 00:28:11,539 --> 00:28:12,720 fuera. Pues aquí va a ser igual. 576 00:28:13,519 --> 00:28:15,460 Intuimos que va a ser igual. ¿Vale? 577 00:28:16,960 --> 00:28:17,359 Porque 578 00:28:17,359 --> 00:28:19,519 normalmente, pues bueno, nosotros podemos con lo que 579 00:28:19,519 --> 00:28:21,220 sabemos, podemos arrancar a trabajar 580 00:28:21,220 --> 00:28:23,460 con nuestras intuiciones y luego ya 581 00:28:23,460 --> 00:28:25,559 pues si algo no cuadra, para eso tenemos 582 00:28:25,559 --> 00:28:27,220 a nuestro amigo a preguntarle 583 00:28:27,220 --> 00:28:35,799 no lo sé, creo que 584 00:28:35,799 --> 00:28:38,099 a ver, te abre un scroll, seguro que te abre un scroll 585 00:28:38,099 --> 00:28:39,940 porque todas estas cosas son muy 586 00:28:39,940 --> 00:28:42,259 equivalentes a swing, entonces te va a abrir un scroll 587 00:28:42,259 --> 00:28:44,079 vale, no se adapta al tamaño 588 00:28:44,079 --> 00:28:45,819 de hecho, lo que no me gusta 589 00:28:45,819 --> 00:28:46,900 que creo que le pasa 590 00:28:46,900 --> 00:28:50,180 es que si tiene menos 591 00:28:50,180 --> 00:28:51,519 del tamaño que tú le has dado 592 00:28:51,519 --> 00:28:53,259 se queda 593 00:28:53,259 --> 00:28:55,660 Ese superávit de espacio se queda ahí 594 00:28:55,660 --> 00:28:57,859 Y para cambiarlo tienes que arreglarlo 595 00:28:57,859 --> 00:28:59,220 Por código, una cosa muy rara 596 00:28:59,220 --> 00:29:01,359 Pero a lo contrario 597 00:29:01,359 --> 00:29:02,680 Que es lo que tú me dices, es un scroll 598 00:29:02,680 --> 00:29:05,599 Venga, pues entonces yo creo que ya 599 00:29:05,599 --> 00:29:07,740 En el fxml en principio tendríamos 600 00:29:07,740 --> 00:29:08,960 Todo lo que hace falta 601 00:29:08,960 --> 00:29:10,859 Creo 602 00:29:10,859 --> 00:29:16,000 No tengo ni idea quién 603 00:29:16,000 --> 00:29:18,900 Vale, pues entonces 604 00:29:18,900 --> 00:29:21,769 ¿Eh? 605 00:29:24,359 --> 00:29:25,539 Venga, ¿también quieres? 606 00:29:26,980 --> 00:29:28,579 Vale, no lo vamos a hacer todo 607 00:29:28,579 --> 00:29:29,599 Luego lo vais a hacer vosotros 608 00:29:29,599 --> 00:29:31,599 Pero venga, añadir tarea, vamos a dejar 609 00:29:31,599 --> 00:29:32,599 Completar tarea 610 00:29:32,599 --> 00:29:35,440 Aquí abajo lo ponemos 611 00:29:35,440 --> 00:29:40,240 Venga, al haber 612 00:29:40,240 --> 00:29:42,819 Control, controles 613 00:29:42,819 --> 00:29:44,339 Ay, es que no me lo veo aquí 614 00:29:44,339 --> 00:29:48,380 Es que sois insaciables 615 00:29:48,380 --> 00:29:50,000 Vamos a ver 616 00:29:50,000 --> 00:29:51,619 Un botón 617 00:29:51,619 --> 00:29:53,619 Para 618 00:29:53,619 --> 00:29:57,920 Se podría capturar 619 00:29:57,920 --> 00:30:00,440 Seguro, hacer doble clic 620 00:30:00,440 --> 00:30:01,880 Y que el doble clic 621 00:30:01,880 --> 00:30:04,180 Fuera completar, que un clic fuera 622 00:30:04,180 --> 00:30:08,299 mostrar y doble clic completar pero bueno ya sería un poco pero se podría 623 00:30:08,299 --> 00:30:14,200 hacer lógicamente pues este botón de aquí que sea ya queda la interfaz un 624 00:30:14,200 --> 00:30:18,970 poco fea pero bueno 625 00:30:18,970 --> 00:30:36,359 y este va a tener el texto completar tarea completar tarea 626 00:30:36,359 --> 00:30:43,740 Sí, vamos a poner el mismo 627 00:30:43,740 --> 00:30:45,200 Ya que hemos puesto un 628 00:30:45,200 --> 00:30:47,480 Venga, que era 629 00:30:47,480 --> 00:30:52,119 Acción, tarea 630 00:30:52,119 --> 00:30:52,900 Creo que era 631 00:30:52,900 --> 00:30:56,400 Tarea, acción, tarea 632 00:30:56,400 --> 00:30:58,799 Vale, guardamos 633 00:30:58,799 --> 00:31:01,690 Y ahora 634 00:31:01,690 --> 00:31:03,930 Vamos a revisar 635 00:31:03,930 --> 00:31:04,869 El FXML 636 00:31:04,869 --> 00:31:07,609 Importante revisarlo, a ver si 637 00:31:07,609 --> 00:31:09,769 Todo lo que está, está bien, porque este es el que importa 638 00:31:09,769 --> 00:31:11,470 El Steam Builder es una ayudita 639 00:31:11,470 --> 00:31:13,730 Vale, vamos a ver 640 00:31:13,730 --> 00:31:16,369 la table view se llama tabla 641 00:31:16,369 --> 00:31:17,089 muy bien 642 00:31:17,089 --> 00:31:20,430 cuando la pinchemos responderá con este 643 00:31:20,430 --> 00:31:21,009 método 644 00:31:21,009 --> 00:31:24,589 el controlador 645 00:31:24,589 --> 00:31:26,309 que va a responder en nuestra escena 646 00:31:26,309 --> 00:31:27,170 es este 647 00:31:27,170 --> 00:31:30,250 la tabla tiene 648 00:31:30,250 --> 00:31:32,309 dos columnas que se llaman call nombre 649 00:31:32,309 --> 00:31:33,210 call fecha 650 00:31:33,210 --> 00:31:36,329 luego aparte tengo tres 651 00:31:36,329 --> 00:31:37,049 botones 652 00:31:37,049 --> 00:31:40,250 sin nombre pero con un on action 653 00:31:40,250 --> 00:31:42,049 que 654 00:31:42,049 --> 00:31:44,650 es el mismo para los tres 655 00:31:44,650 --> 00:31:48,390 y con el texto correspondiente 656 00:31:48,390 --> 00:31:50,410 y ya está, y esta es mi vista 657 00:31:50,410 --> 00:31:52,490 indicando 658 00:31:52,490 --> 00:31:54,509 además las variables 659 00:31:54,509 --> 00:31:56,710 java con las que se une con el controlador 660 00:31:56,710 --> 00:32:00,019 entonces 661 00:32:00,019 --> 00:32:01,960 antes de probar si la vista funciona 662 00:32:01,960 --> 00:32:03,759 vamos a hacer el controlador porque si lo arrancamos así 663 00:32:03,759 --> 00:32:05,839 entiendo que hará un error porque dirá 664 00:32:05,839 --> 00:32:07,119 este controller no lo encuentro 665 00:32:07,119 --> 00:32:09,759 entonces vamos a hacerle 666 00:32:09,759 --> 00:32:11,779 el controlador aunque ahora mismo tenga 667 00:32:11,779 --> 00:32:13,380 los métodos vacíos luego no haga nada 668 00:32:13,380 --> 00:32:22,880 Mi paquete es .damp1.controller 669 00:32:22,880 --> 00:32:26,660 Es mi paquete y la clase 670 00:32:26,660 --> 00:32:28,779 He dicho que se va a llamar controller 671 00:32:28,779 --> 00:32:35,660 Vale 672 00:32:35,660 --> 00:32:38,240 Pues controller 673 00:32:38,240 --> 00:32:42,160 Le vamos a hacer un initialize 674 00:32:42,160 --> 00:32:52,700 Que 675 00:32:52,700 --> 00:32:57,180 Voy a asegurarme que estoy escribiendo bien las cosas 676 00:32:57,180 --> 00:32:58,660 Porque si no vamos arrancando 677 00:32:58,660 --> 00:33:00,380 errores 678 00:33:00,380 --> 00:33:04,859 voy a abrir este 679 00:33:04,859 --> 00:33:06,599 controller de referencia 680 00:33:06,599 --> 00:33:08,380 me inicialice 681 00:33:08,380 --> 00:33:11,339 a ver, por mirar cosas de referencia 682 00:33:11,339 --> 00:33:13,140 me doy cuenta antes de que salga 683 00:33:13,140 --> 00:33:14,700 el error, cuidadito 684 00:33:14,700 --> 00:33:17,220 no se nos olvide la anotación 685 00:33:17,220 --> 00:33:18,500 para que 686 00:33:18,500 --> 00:33:20,799 la mini máquina virtual JavaFX 687 00:33:20,799 --> 00:33:22,940 sepa que este es el método que tiene 688 00:33:22,940 --> 00:33:24,640 que arrancar cuando cargue el controller 689 00:33:24,640 --> 00:33:25,940 cuando cargue la aplicación 690 00:33:25,940 --> 00:33:28,619 si no le ponemos el fxml no lo carga 691 00:33:28,619 --> 00:33:32,559 cuando carga la aplicación. Vale, pues vamos a ponerle 692 00:33:32,559 --> 00:33:39,420 la anotación. Entonces, aquí sería el sitio 693 00:33:39,420 --> 00:33:44,359 de cargar las primeras tareas desde un fichero, si es que las hay. 694 00:33:45,039 --> 00:33:48,500 ¿Vale? Pero bueno, por ahora vamos a partir sin tareas 695 00:33:48,500 --> 00:33:54,950 y ya está. Y luego habrá una serie de métodos. 696 00:33:55,049 --> 00:33:57,990 Luego, a ver, vamos a poner las variables que ya tenemos. 697 00:33:58,890 --> 00:34:06,690 Tenemos una tableView que se 698 00:34:06,690 --> 00:34:08,769 llama tabla 699 00:34:08,769 --> 00:34:09,530 ¿verdad? 700 00:34:21,880 --> 00:34:25,800 claro, claro, sí, sí, sí 701 00:34:25,800 --> 00:34:27,880 si no, no hay manera de encontrar 702 00:34:27,880 --> 00:34:28,579 una con la otra 703 00:34:28,579 --> 00:34:31,579 vale, ahora mi 704 00:34:31,579 --> 00:34:33,820 fxml tendrá unos 705 00:34:33,820 --> 00:34:35,800 ficheros, unos 706 00:34:35,800 --> 00:34:37,880 métodos que son 707 00:34:37,880 --> 00:34:39,739 uno de ellos va a ser 708 00:34:39,739 --> 00:34:41,579 public 709 00:34:41,579 --> 00:34:43,559 void acción 710 00:34:43,559 --> 00:34:45,460 tarea 711 00:34:45,460 --> 00:34:47,039 que 712 00:34:47,039 --> 00:34:49,659 va a necesitar 713 00:34:49,659 --> 00:34:50,940 el action event sí o sí 714 00:34:50,940 --> 00:34:52,219 porque 715 00:34:52,219 --> 00:34:55,500 es el mismo para los tres botones 716 00:34:55,500 --> 00:34:58,000 cuidado al importarlo 717 00:34:58,000 --> 00:34:59,760 que es el de java fx 718 00:34:59,760 --> 00:35:01,679 entonces el de acción tarea 719 00:35:01,679 --> 00:35:03,239 va a necesitar el action event sí o sí 720 00:35:03,239 --> 00:35:04,840 porque es el mismo para los tres botones 721 00:35:04,840 --> 00:35:06,400 luego se lo vamos poniendo 722 00:35:06,400 --> 00:35:08,739 y luego tenemos el de la tabla 723 00:35:08,739 --> 00:35:14,590 acción tarea es la respuesta al botón 724 00:35:14,590 --> 00:35:16,329 de añadir tarea, eliminar tarea 725 00:35:16,329 --> 00:35:17,289 o completar tarea 726 00:35:17,289 --> 00:35:19,989 cualquiera de los tres van a parar aquí 727 00:35:19,989 --> 00:35:31,449 bueno, a ver, depende 728 00:35:31,449 --> 00:35:34,789 si tú al final este controller se va a cargar de métodos 729 00:35:34,789 --> 00:35:37,090 pues a lo mejor también es práctico y también depende 730 00:35:37,090 --> 00:35:40,489 si lo que hacen los tres es que en uno va a ser 731 00:35:40,489 --> 00:35:43,510 un add a la colección, en otro va a ser un remove de la colección 732 00:35:43,510 --> 00:35:46,409 son poquitas líneas, entonces lo metes en un único código 733 00:35:46,409 --> 00:35:49,230 y ya está, bueno, que no es que esté 734 00:35:49,230 --> 00:35:51,949 lo bueno ni lo malo, yo sobre todo estaba pensando en que 735 00:35:51,949 --> 00:35:53,750 volver a practicar con esto 736 00:35:53,750 --> 00:35:56,409 entonces luego aparte 737 00:35:56,409 --> 00:35:57,730 aquí teníamos un método 738 00:35:57,730 --> 00:36:00,010 public void 739 00:36:00,010 --> 00:36:01,150 que era el de 740 00:36:01,150 --> 00:36:04,110 tabla, que no me acuerdo ese como se llamaba 741 00:36:04,110 --> 00:36:07,670 en el fxml 742 00:36:07,670 --> 00:36:12,480 onMouseClick 743 00:36:12,480 --> 00:36:14,639 mostrarTarea, se llamaba ese 744 00:36:14,639 --> 00:36:17,139 vale, entonces 745 00:36:17,139 --> 00:36:26,719 mostrarTarea, este el actionEvent no lo va a necesitar 746 00:36:26,719 --> 00:36:28,280 porque 747 00:36:28,280 --> 00:36:29,599 solo para ella 748 00:36:29,599 --> 00:36:31,940 vale 749 00:36:31,940 --> 00:36:37,360 vamos a probar a ver si la vista carga 750 00:36:37,360 --> 00:36:39,500 y hasta aquí ya hemos hecho alguna cosa rara 751 00:36:39,500 --> 00:36:40,440 o no la hemos hecho 752 00:36:40,440 --> 00:36:45,190 entonces 753 00:36:45,190 --> 00:36:50,920 la información 754 00:36:50,920 --> 00:36:52,139 relacionada con 755 00:36:52,139 --> 00:36:54,659 el evento que se ha desencadenado 756 00:36:54,659 --> 00:36:55,940 por ejemplo 757 00:36:55,940 --> 00:36:57,920 que control fue accionado 758 00:36:57,920 --> 00:36:59,579 en que escena estaba 759 00:36:59,579 --> 00:37:02,039 que hora incluso 760 00:37:02,039 --> 00:37:03,480 la hora también lo tiene dentro 761 00:37:03,480 --> 00:37:06,079 informaciones varias sobre el evento 762 00:37:06,079 --> 00:37:08,440 que ha llevado a ese método 763 00:37:08,440 --> 00:37:09,699 vale 764 00:37:09,699 --> 00:37:11,860 vale 765 00:37:11,860 --> 00:37:13,900 entonces 766 00:37:13,900 --> 00:37:15,920 para ejecutar esto 767 00:37:15,920 --> 00:37:18,480 esto hay que ejecutarlo como maven 768 00:37:18,480 --> 00:37:20,079 build, es maven al que llamamos 769 00:37:20,079 --> 00:37:21,559 no llamamos a la máquina virtual 770 00:37:21,559 --> 00:37:24,460 cuando ejecutamos esto, recordad que a quien 771 00:37:24,460 --> 00:37:26,340 llamamos es a la máquina virtual, no llamamos 772 00:37:26,340 --> 00:37:27,960 a la máquina virtual, llamamos a maven 773 00:37:27,960 --> 00:37:30,260 y le decimos, oye tú maven 774 00:37:30,260 --> 00:37:32,300 aquí el que arranca 775 00:37:32,300 --> 00:37:34,139 el que lidera es el plugin 776 00:37:34,139 --> 00:37:36,119 De JavaFX, que te lo he puesto 777 00:37:36,119 --> 00:37:38,139 En el POM, te lo he puesto 778 00:37:38,139 --> 00:37:39,380 Ahí, para que lo encuentres 779 00:37:39,380 --> 00:37:42,039 Y ese plugin en particular, lo que quiero que 780 00:37:42,039 --> 00:37:43,179 Hagas es ejecutarlo 781 00:37:43,179 --> 00:37:47,500 Vale, pues ejecutábamos 782 00:37:47,500 --> 00:37:55,659 Y la vista sale 783 00:37:55,659 --> 00:37:57,539 Pero no 784 00:37:57,539 --> 00:37:59,619 Sale nada, porque aquí ni hay 785 00:37:59,619 --> 00:38:00,940 Componentes, ni hay nada 786 00:38:00,940 --> 00:38:05,280 Vale, bueno, pues ahora ya 787 00:38:05,280 --> 00:38:06,860 Si empieza lo interesante 788 00:38:06,860 --> 00:38:08,840 Necesitáis que paremos dos minutos 789 00:38:08,840 --> 00:38:10,920 Alguien tiene que parar 790 00:38:10,920 --> 00:38:12,940 Vamos a parar un minuto, porque quiero ver un poco 791 00:38:12,940 --> 00:38:14,699 el lío que se está montando ahí