1 00:00:01,139 --> 00:00:06,040 El 5 es el primero en el cual se incorpora la necesidad de investigar un componente nuevo. 2 00:00:06,500 --> 00:00:10,359 Claro, pero es que componentes posibles de swing hay tropecientos mil. 3 00:00:10,679 --> 00:00:14,519 Entonces continuamente uno puede necesitar investigar un componente nuevo para incorporarlo. 4 00:00:15,039 --> 00:00:15,480 Y ya está. 5 00:00:16,039 --> 00:00:18,640 Pues este es un componente nuevo a investigar que uno busca. 6 00:00:18,739 --> 00:00:20,559 ¿Y este cuál es? ¿Este swing cómo lo llama? 7 00:00:20,699 --> 00:00:24,480 Ah, vale, este es el combo box, que es el desplegable de toda la vida. 8 00:00:24,620 --> 00:00:28,940 Pues una vez que uno identifica, ah, es así, pues ya estudia un poquito cómo funciona. 9 00:00:28,940 --> 00:00:31,579 que siempre será, lo integro en mi aplicación 10 00:00:31,579 --> 00:00:33,280 lo añado 11 00:00:33,280 --> 00:00:33,899 a mi panel 12 00:00:33,899 --> 00:00:36,979 veo los métodos que tiene 13 00:00:36,979 --> 00:00:39,460 para hacer las cosas 14 00:00:39,460 --> 00:00:40,840 que a mí me interesan 15 00:00:40,840 --> 00:00:43,380 en este caso el desplegable tendrá métodos 16 00:00:43,380 --> 00:00:45,079 de añadir al desplegable 17 00:00:45,079 --> 00:00:46,560 eliminar del desplegable 18 00:00:46,560 --> 00:00:48,859 coger lo que esté seleccionado 19 00:00:48,859 --> 00:00:50,240 pues veo los métodos que tiene 20 00:00:50,240 --> 00:00:53,240 y luego en el caso de que quiera capturar un evento 21 00:00:53,240 --> 00:00:55,159 sobre él, pues sería 22 00:00:55,159 --> 00:00:57,439 voy a probar el ActionListener, cómo funciona 23 00:00:57,439 --> 00:00:59,619 o si no voy a ver 24 00:00:59,619 --> 00:01:01,820 que otro evento se adapta, si el de hacer clic 25 00:01:01,820 --> 00:01:03,240 con el mouse, listener 26 00:01:03,240 --> 00:01:06,019 esa es la dinámica, bueno pues en este caso 27 00:01:06,019 --> 00:01:11,859 si uno hace esto así de corrido 28 00:01:11,859 --> 00:01:12,980 así a lo bestia 29 00:01:12,980 --> 00:01:20,870 pues lo que habréis hecho habrá sido lo de siempre 30 00:01:20,870 --> 00:01:22,250 esto 31 00:01:22,250 --> 00:01:23,930 heredando 32 00:01:23,930 --> 00:01:26,189 del JFrame 33 00:01:26,189 --> 00:01:27,930 y un constructor 34 00:01:27,930 --> 00:01:34,980 y ahora en este 35 00:01:34,980 --> 00:01:36,900 pues todavía vamos a poner todos los componentes 36 00:01:36,900 --> 00:01:38,780 uno detrás de otro con un gestor de ubicación 37 00:01:38,780 --> 00:01:40,319 normal y corriente 38 00:01:40,319 --> 00:02:08,629 vale, y ahora añadimos los componentes 39 00:02:08,629 --> 00:02:09,430 entonces 40 00:02:09,430 --> 00:02:12,389 importamos el frame 41 00:02:12,389 --> 00:02:15,150 vale, componentes 42 00:02:15,150 --> 00:02:16,210 vamos a decidir cuáles 43 00:02:16,210 --> 00:02:18,650 dos áreas de texto, dos etiquetas 44 00:02:18,650 --> 00:02:20,090 y un botón 45 00:02:20,090 --> 00:02:22,030 y un componente de estos 46 00:02:22,030 --> 00:02:23,729 que tenemos que averiguar cuál es 47 00:02:23,729 --> 00:02:25,969 una vez que uno lo averigua lo pone 48 00:02:25,969 --> 00:02:28,069 ¿dónde ponemos los componentes? 49 00:02:28,110 --> 00:02:29,849 bueno, pues tenemos dos posibilidades 50 00:02:29,849 --> 00:02:32,349 o aquí fuera como propiedades de la clase 51 00:02:32,349 --> 00:02:34,469 o dentro como variables locales 52 00:02:34,469 --> 00:02:35,069 del constructor 53 00:02:35,069 --> 00:02:38,629 si vamos a tener 54 00:02:38,629 --> 00:02:40,650 que acceder a esos 55 00:02:40,650 --> 00:02:42,349 componentes desde clases 56 00:02:42,349 --> 00:02:44,590 internas, desde aquí 57 00:02:44,590 --> 00:02:46,569 que aquí pondremos las clases 58 00:02:46,569 --> 00:02:48,469 internas que son los capturadores 59 00:02:48,469 --> 00:02:50,389 si vamos a tener que acceder a esos componentes 60 00:02:50,389 --> 00:02:52,689 el sitio para ponerlos 61 00:02:52,689 --> 00:02:54,469 es ahí, para tener acceso 62 00:02:54,469 --> 00:02:55,610 a las clases internas 63 00:02:55,610 --> 00:02:58,530 si no vamos a tener que acceder a ellos, pues los puedo declarar 64 00:02:58,530 --> 00:03:00,569 dentro, entonces en este caso 65 00:03:00,569 --> 00:03:02,710 uno podría pensar, vamos a ver 66 00:03:02,710 --> 00:03:04,810 esto 67 00:03:04,810 --> 00:03:06,729 ¿cómo va a funcionar? 68 00:03:07,449 --> 00:03:08,590 bueno pues, ¿cuáles 69 00:03:08,590 --> 00:03:10,490 de estos elementos van a tener 70 00:03:10,490 --> 00:03:12,569 que ser capturados 71 00:03:12,569 --> 00:03:14,189 o evento? el botón 72 00:03:14,189 --> 00:03:16,650 porque cuando demos al botón algo va a tener 73 00:03:16,650 --> 00:03:18,610 que pasar, cuando demos al botón 74 00:03:18,610 --> 00:03:20,569 va a tener que pasar, que cojamos 75 00:03:20,569 --> 00:03:22,550 lo que hay en este área de texto, cojamos lo que 76 00:03:22,550 --> 00:03:24,610 hay en este área de texto y lo guardemos 77 00:03:24,610 --> 00:03:25,409 en algún sitio 78 00:03:25,409 --> 00:03:27,330 para tenerlo ahí 79 00:03:27,330 --> 00:03:28,569 para cuando haya que tirar de él 80 00:03:28,569 --> 00:03:30,650 y luego además que se actualice aquí 81 00:03:30,650 --> 00:03:32,449 luego 82 00:03:32,449 --> 00:03:35,449 este área de texto 83 00:03:35,449 --> 00:03:36,669 este área de texto 84 00:03:36,669 --> 00:03:39,150 y este combo box tienen que ser accesibles 85 00:03:39,150 --> 00:03:41,430 desde las clases internas 86 00:03:41,430 --> 00:03:42,949 que están fuera del 87 00:03:42,949 --> 00:03:44,990 constructor, que están fuera 88 00:03:44,990 --> 00:03:46,849 luego esas tres áreas de texto 89 00:03:46,849 --> 00:03:48,669 como mínimo tienen que estar fuera 90 00:03:48,669 --> 00:03:50,770 esas tres áreas de texto como mínimo 91 00:03:50,770 --> 00:03:51,650 tienen que estar fuera 92 00:03:51,650 --> 00:03:53,949 pues entonces las ponemos fuera 93 00:03:53,949 --> 00:03:57,069 vale, ahí va a estar el área de texto de título 94 00:03:57,069 --> 00:04:04,250 que la declararíamos ya 95 00:04:04,250 --> 00:04:05,909 con el tamaño que nos diera la gana 96 00:04:05,909 --> 00:04:07,009 el tamaño visible 97 00:04:07,009 --> 00:04:10,009 no el que cabe, el que cabe, cabe mucho más 98 00:04:10,009 --> 00:04:22,759 el visible, el otro 99 00:04:22,759 --> 00:04:28,220 y hemos dicho que como 100 00:04:28,220 --> 00:04:30,279 este elemento también tiene que estar 101 00:04:30,279 --> 00:04:32,060 visible desde 102 00:04:32,060 --> 00:04:34,379 Daniel, tiene que estar visible 103 00:04:34,379 --> 00:04:36,220 desde las clases 104 00:04:36,220 --> 00:04:38,240 capturadoras que están 105 00:04:38,240 --> 00:04:40,040 fuera del constructor 106 00:04:40,040 --> 00:04:42,379 también tiene que estar visible, tenemos que ponerlo 107 00:04:42,379 --> 00:04:44,040 también aquí, entonces 108 00:04:44,040 --> 00:04:46,519 después de hacer la fase de ver, oye y este desplegable 109 00:04:46,519 --> 00:04:48,019 ¿cuál es? swing, ¿cómo lo llama? 110 00:04:48,259 --> 00:04:50,079 ah, es el jcombo box, pues nada 111 00:04:50,079 --> 00:04:52,439 me pongo ahí 112 00:04:52,439 --> 00:04:53,720 un jcombo box 113 00:04:53,720 --> 00:05:01,269 y ya de paso, pues lo instancio 114 00:05:01,269 --> 00:05:11,370 ¿vale? 115 00:05:12,629 --> 00:05:13,069 entonces 116 00:05:13,069 --> 00:05:27,500 vale 117 00:05:27,500 --> 00:05:29,259 ahí, vale 118 00:05:29,259 --> 00:05:30,540 entonces aquí ya 119 00:05:30,540 --> 00:05:33,120 ya se, me salta una pequeña 120 00:05:33,120 --> 00:05:35,319 una pequeña alarma que es que 121 00:05:35,319 --> 00:05:37,360 me dice un aviso amarillo, no un error 122 00:05:37,360 --> 00:05:39,339 me dice, combo box 123 00:05:39,339 --> 00:05:41,819 en una clase genérica, deberías parametrizarla 124 00:05:41,819 --> 00:05:43,300 bueno, entonces yo esa 125 00:05:43,300 --> 00:05:45,100 alarma por ahora me la dejo ahí 126 00:05:45,100 --> 00:05:47,000 registrada como diciendo, en algún momento 127 00:05:47,000 --> 00:05:48,759 entenderé a qué se refiere 128 00:05:48,759 --> 00:05:51,100 por ahora voy a seguir tirando 129 00:05:51,100 --> 00:05:53,420 porque bueno, ese elemento se llama combo box 130 00:05:53,420 --> 00:05:55,319 yo lo he instanciado, me ha dejado y lo voy a añadir 131 00:05:56,000 --> 00:05:56,959 vale 132 00:05:56,959 --> 00:06:00,680 y ese aviso pues me lo dejo 133 00:06:00,680 --> 00:06:02,660 ahí registrado como, uy voy a tener que volver 134 00:06:02,660 --> 00:06:04,399 a sobre esto seguramente en algún momento 135 00:06:04,399 --> 00:06:06,279 cuando tenga mi aplicación más avanzada 136 00:06:06,279 --> 00:06:08,000 y la esté probando, seguramente haya que volver. 137 00:06:08,560 --> 00:06:11,899 Vale, pues por ahora no lo dejamos ahí, ese proceso. 138 00:06:12,660 --> 00:06:16,740 Vale, entonces, ¿el resto de componentes es necesario que vayan fuera? 139 00:06:18,620 --> 00:06:21,399 Bueno, las etiquetas no, las etiquetas se ponen ahí 140 00:06:21,399 --> 00:06:24,019 y ninguna clase interna las toca para hacer nada. 141 00:06:24,519 --> 00:06:27,680 La aplicación va funcionando y las etiquetas están ahí inamovibles, 142 00:06:27,779 --> 00:06:29,439 las de tu director, están ahí que no se mueven. 143 00:06:30,259 --> 00:06:33,000 Nadie las tiene que tocar, pues las puedo declarar dentro del constructo 144 00:06:33,000 --> 00:06:34,680 y las dejo como locales, por ejemplo. 145 00:06:34,680 --> 00:06:36,220 el botón 146 00:06:36,220 --> 00:06:38,959 hay que añadir el evento 147 00:06:38,959 --> 00:06:41,379 pero el botón se toca, se cambia 148 00:06:41,379 --> 00:06:43,180 se le cambia el nombre, se hace algo con él 149 00:06:43,180 --> 00:06:45,339 pues no, el botón no se le toca 150 00:06:45,339 --> 00:06:46,540 tampoco, está ahí inamovible 151 00:06:46,540 --> 00:06:49,639 entonces puede declarar localmente a la aplicación 152 00:06:49,639 --> 00:06:51,759 en principio, venga pues lo declaro 153 00:06:51,759 --> 00:06:53,579 dentro, todo lo que uno declare local 154 00:06:53,579 --> 00:06:55,420 si puede, mejor 155 00:06:55,420 --> 00:06:57,079 porque todo lo local 156 00:06:57,079 --> 00:06:58,800 al estar más escondido 157 00:06:58,800 --> 00:07:02,019 es más fácil que no de problemas al resto de la aplicación 158 00:07:02,019 --> 00:07:02,860 que no genere 159 00:07:02,860 --> 00:07:05,779 ambigüedades, entonces todo lo que sea local 160 00:07:05,779 --> 00:07:07,480 pues local, bueno pues 161 00:07:07,480 --> 00:07:09,040 lo que es local es lo que me falta 162 00:07:09,040 --> 00:07:10,939 la etiqueta de título 163 00:07:10,939 --> 00:07:20,589 y ya le vamos a poner en el constructor lo que queremos 164 00:07:20,589 --> 00:07:22,170 que figure en ella 165 00:07:22,170 --> 00:07:33,600 la etiqueta en la que pone 166 00:07:33,600 --> 00:07:34,079 director 167 00:07:34,079 --> 00:07:44,649 me he adelantado al siguiente paso 168 00:07:44,649 --> 00:07:49,660 esta es la etiqueta sin más 169 00:07:49,660 --> 00:07:52,019 que no se va a tocar, nadie más la va a 170 00:07:52,019 --> 00:07:53,319 tocar una vez puesta en la 171 00:07:53,319 --> 00:07:55,279 una vez puesta en la interfaz 172 00:07:55,279 --> 00:07:57,939 entonces la declaramos local y mejor 173 00:07:57,939 --> 00:08:02,240 y el botón, el botón también 174 00:08:02,240 --> 00:08:03,800 una vez pegado en la interfaz 175 00:08:03,800 --> 00:08:06,319 el programa ya no lo toca más 176 00:08:06,319 --> 00:08:08,220 no lo tiene que tocar más para nada 177 00:08:08,220 --> 00:08:09,939 lo toca el usuario cuando hace click 178 00:08:09,939 --> 00:08:11,160 pero el programa ya no lo vuelve a tocar 179 00:08:11,160 --> 00:08:13,019 pues entonces local ahí 180 00:08:13,019 --> 00:08:41,110 vale, pues ahora ya lo único que falta es añadirlos 181 00:08:41,110 --> 00:08:43,070 lo ideal sería pues trabajar 182 00:08:43,070 --> 00:08:45,149 con un gestor de ubicación 183 00:08:45,149 --> 00:08:46,690 absoluta, con un gestor grid layer 184 00:08:46,690 --> 00:08:48,990 lo que fuera para colocarlo yo como yo lo quisiera 185 00:08:48,990 --> 00:08:51,210 pero nosotros toda esa parte de jugar con los gestores 186 00:08:51,210 --> 00:08:52,970 de ubicación directamente por código 187 00:08:52,970 --> 00:08:56,250 la dejamos, la tenéis muy bien documentada 188 00:08:56,250 --> 00:08:58,269 en la API de Java 189 00:08:58,269 --> 00:08:59,330 en los libros, donde sea 190 00:08:59,330 --> 00:09:02,169 pues vamos a añadirlos al menos 191 00:09:02,169 --> 00:09:04,190 por orden para que se entienda, primero vamos a añadir 192 00:09:04,190 --> 00:09:05,009 al panel 193 00:09:05,009 --> 00:09:10,779 vamos a añadir 194 00:09:10,779 --> 00:09:12,980 la etiqueta de título 195 00:09:12,980 --> 00:09:15,779 añadimos 196 00:09:15,779 --> 00:09:17,620 la etiqueta de título 197 00:09:17,620 --> 00:09:20,340 luego vamos a añadir el área de texto 198 00:09:20,340 --> 00:09:21,480 para el título 199 00:09:21,480 --> 00:09:32,899 vamos a añadir el área de texto para el título 200 00:09:32,899 --> 00:09:33,740 que es este 201 00:09:33,740 --> 00:09:37,460 Luego vamos a añadir la etiqueta 202 00:09:37,460 --> 00:09:41,500 Para el director 203 00:09:41,500 --> 00:09:44,620 Luego vamos a añadir 204 00:09:44,620 --> 00:09:50,759 El área de texto para el director 205 00:09:50,759 --> 00:09:51,639 Que era este 206 00:09:51,639 --> 00:09:53,139 Luego vamos a ponerle el botón 207 00:09:53,139 --> 00:09:55,120 Para que al menos tenga un poquito de orden 208 00:09:55,120 --> 00:09:57,700 Le vamos a añadir el botón 209 00:09:57,700 --> 00:10:01,779 Y luego le vamos a añadir ya 210 00:10:01,779 --> 00:10:02,899 El desplegable 211 00:10:02,899 --> 00:10:13,600 Vale, mi interfaz está 212 00:10:13,600 --> 00:10:14,460 Le vamos a dar 213 00:10:14,460 --> 00:10:16,779 tamaño aquí mismo 214 00:10:16,779 --> 00:10:20,580 dis.setSize 215 00:10:20,580 --> 00:10:22,440 o setSize, como lo queréis llamar, le vamos a dar 216 00:10:22,440 --> 00:10:24,399 pues yo que sé, 200 217 00:10:24,399 --> 00:10:25,879 200, a ver como sale 218 00:10:25,879 --> 00:10:28,519 y le vamos a hacer 219 00:10:28,519 --> 00:10:28,960 visible 220 00:10:28,960 --> 00:10:32,320 ya dentro del constructor directamente 221 00:10:32,320 --> 00:10:36,519 bueno, pues mi constructor 222 00:10:36,519 --> 00:10:38,820 ya lo hace todo, mete los componentes 223 00:10:38,820 --> 00:10:40,419 en el panel 224 00:10:40,419 --> 00:10:42,460 hace visible, esto es como poner 225 00:10:42,460 --> 00:10:44,039 dis, obviamente, ¿no? 226 00:10:44,120 --> 00:10:46,419 a este frame, a este, fíjale este tamaño 227 00:10:46,419 --> 00:10:47,580 pero como el dis es opcional 228 00:10:47,580 --> 00:10:52,789 Vale, y ahora nos falta un main 229 00:10:52,789 --> 00:11:01,090 Vale, y ahora nos falta un main 230 00:11:01,090 --> 00:11:02,850 Para poder lanzar la aplicación 231 00:11:02,850 --> 00:11:04,370 Vamos a meter el main aquí mismo 232 00:11:04,370 --> 00:11:07,129 Y así no nos tenemos que hacer una clase aparte 233 00:11:07,129 --> 00:11:09,750 Para hacer las pruebas 234 00:11:09,750 --> 00:11:14,330 Esto solamente para facilitar la fase de pruebas 235 00:11:14,330 --> 00:11:17,590 Lo normal en una aplicación 236 00:11:17,590 --> 00:11:19,029 Es que el arrancable 237 00:11:19,029 --> 00:11:19,950 Estaría en otro sitio 238 00:11:19,950 --> 00:11:23,049 Vale, pues aquí creamos la ventana 239 00:11:23,049 --> 00:11:23,529 Y ya está 240 00:11:23,529 --> 00:11:30,429 Es que ya, como aquí 241 00:11:30,429 --> 00:11:32,649 Ni voy a hacer el Vset visible y nada 242 00:11:32,649 --> 00:11:33,429 Porque lo he hecho aquí 243 00:11:33,429 --> 00:11:36,909 Es que ni siquiera tengo por qué guardar la referencia 244 00:11:36,909 --> 00:11:37,850 Ya, si no me da la gana 245 00:11:37,850 --> 00:11:39,889 ¿Para qué voy a guardar la referencia? 246 00:11:39,990 --> 00:11:40,950 No me hace ninguna falta 247 00:11:40,950 --> 00:11:42,750 Porque este Main no hace más que esto 248 00:11:42,750 --> 00:11:44,210 No hace más 249 00:11:44,210 --> 00:11:44,970 Vale 250 00:11:44,970 --> 00:11:47,809 Entonces, la vista estaría 251 00:11:47,809 --> 00:11:48,909 Vamos a probarla 252 00:11:48,909 --> 00:11:50,669 Luego falta el comportamiento 253 00:11:50,669 --> 00:11:53,330 La vista está, vamos a probar 254 00:11:53,330 --> 00:11:55,970 si es como la que queremos 255 00:11:55,970 --> 00:11:58,029 va a estar fea porque va a estar todo seguido 256 00:11:58,029 --> 00:12:01,789 ah bueno, es que no he fijado el gesto de ubicación 257 00:12:01,789 --> 00:12:03,870 pues obviamente estaba muy fea 258 00:12:03,870 --> 00:12:05,090 entonces al panel 259 00:12:05,090 --> 00:12:09,250 al panel hay que fijarle 260 00:12:09,250 --> 00:12:10,070 el layout 261 00:12:10,070 --> 00:12:13,230 este de aquí, ala, ya está 262 00:12:13,230 --> 00:12:14,830 fija el panel, volvemos a hacer la prueba 263 00:12:14,830 --> 00:12:17,129 vale, siempre 264 00:12:17,129 --> 00:12:18,909 hay que hacer 265 00:12:18,909 --> 00:12:21,230 las pruebas primero de la 266 00:12:21,230 --> 00:12:23,049 vista, antes de meterse 267 00:12:23,049 --> 00:12:23,870 con el comportamiento 268 00:12:23,870 --> 00:12:26,370 Bueno, pues hombre 269 00:12:26,370 --> 00:12:28,129 Pues joder, he acertado con el tamaño 270 00:12:28,129 --> 00:12:28,909 Porque es que me queda 271 00:12:28,909 --> 00:12:31,730 De casualidad, porque queda bien 272 00:12:31,730 --> 00:12:33,809 Título, abajo el título, director 273 00:12:33,809 --> 00:12:35,610 Abajo el director, añado película 274 00:12:35,610 --> 00:12:37,649 Y aquí el desplegable que además no tiene nada 275 00:12:37,649 --> 00:12:38,649 Está vacío 276 00:12:38,649 --> 00:12:42,450 Vale, pues muy bonita mi interfaz 277 00:12:42,450 --> 00:12:43,750 Es la justo la que quería 278 00:12:43,750 --> 00:12:46,769 Pues ahora ya voy a dar comportamiento 279 00:12:46,769 --> 00:12:47,950 A los eventos que lo tengan 280 00:12:47,950 --> 00:12:49,169 A los componentes que lo tengan 281 00:12:49,169 --> 00:12:51,090 ¿Qué dos componentes? 282 00:12:51,409 --> 00:12:52,889 Cada vez que yo le dé al botón 283 00:12:52,889 --> 00:12:55,909 hay que coger el título que hay aquí 284 00:12:55,909 --> 00:12:57,289 y el director que hay aquí 285 00:12:57,289 --> 00:12:59,009 y guardarlo 286 00:12:59,009 --> 00:13:01,529 idealmente en una base de datos 287 00:13:01,529 --> 00:13:03,029 que no tenemos, pero guardarlo 288 00:13:03,029 --> 00:13:07,159 vale, y luego además 289 00:13:07,159 --> 00:13:08,419 este combo box 290 00:13:08,419 --> 00:13:11,100 se va a tener que actualizar de tal manera 291 00:13:11,100 --> 00:13:13,019 que registre que tenga 292 00:13:13,019 --> 00:13:15,600 todos los títulos que están guardados 293 00:13:15,600 --> 00:13:18,820 vale, entonces 294 00:13:18,820 --> 00:13:20,539 este tiene que recoger un evento 295 00:13:20,539 --> 00:13:22,559 y ahora, ¿qué más hace la aplicación? 296 00:13:22,679 --> 00:13:24,980 pues cuando tú despliegas el combo box y haces clic 297 00:13:24,980 --> 00:13:25,700 en un título 298 00:13:25,700 --> 00:13:28,279 te aparecerá aquí el director de la película 299 00:13:28,279 --> 00:13:30,299 luego dos funcionalidades 300 00:13:30,299 --> 00:13:32,519 añadir película a mi 301 00:13:32,519 --> 00:13:34,679 almacén de películas 302 00:13:34,679 --> 00:13:36,580 y ahora cuando en el 303 00:13:36,580 --> 00:13:38,419 combo box selecciono un título 304 00:13:38,419 --> 00:13:40,360 me aparecerán los datos de esa peli 305 00:13:40,360 --> 00:13:41,860 que en este caso es el director solo 306 00:13:41,860 --> 00:13:44,480 pero podría haber aquí 307 00:13:44,480 --> 00:13:46,639 muchos más textfield con título, director, año 308 00:13:46,639 --> 00:13:47,740 intérpretes, bla bla bla 309 00:13:47,740 --> 00:13:49,820 podría yo guardar todo eso 310 00:13:49,820 --> 00:13:52,700 extendido y cuando yo selecciono aquí el título 311 00:13:52,700 --> 00:13:54,000 pues que me aparezcan todos 312 00:13:54,000 --> 00:13:57,100 Entonces he puesto solo director para no perder el tiempo 313 00:13:57,100 --> 00:13:58,259 Haciendo lo mismo una y otra vez 314 00:13:58,259 --> 00:13:59,039 Pero sería lo mismo 315 00:13:59,039 --> 00:14:00,720 Vale 316 00:14:00,720 --> 00:14:06,389 Los testfields he puesto 20 317 00:14:06,389 --> 00:14:09,850 Pero vamos, que lo he hecho todo 318 00:14:09,850 --> 00:14:10,990 De pura casualidad 319 00:14:10,990 --> 00:14:13,330 Y ha encajado en un aspecto más o menos normal 320 00:14:13,330 --> 00:14:16,389 Porque 321 00:14:16,389 --> 00:14:18,730 Ahora lo estiro 322 00:14:18,730 --> 00:14:20,570 Pues me queda así, que no queda mal tampoco 323 00:14:20,570 --> 00:14:22,610 Vale 324 00:14:22,610 --> 00:14:26,610 Entonces este tamaño 325 00:14:26,610 --> 00:14:27,870 Si pudiera pillarlo 326 00:14:27,870 --> 00:14:29,509 Y dejarlo 327 00:14:29,509 --> 00:14:30,570 Este estaría mejor 328 00:14:30,570 --> 00:14:33,590 Pero este tamaño igual es 329 00:14:33,590 --> 00:14:35,610 400 por 330 00:14:35,610 --> 00:14:36,950 75 331 00:14:36,950 --> 00:14:39,490 Única prueba que hago, no voy a perder el tiempo con esto 332 00:14:39,490 --> 00:14:50,460 Voy a probar 333 00:14:50,460 --> 00:14:51,320 A ver si 334 00:14:51,320 --> 00:14:58,509 400, bueno 335 00:14:58,509 --> 00:15:00,909 Una prueba más solo, 600 336 00:15:00,909 --> 00:15:03,110 A ver si 600 queda mejor 337 00:15:03,110 --> 00:15:16,919 Lo de 75 un poco corto 338 00:15:16,919 --> 00:15:18,200 120 339 00:15:18,200 --> 00:15:20,360 Y ya está 340 00:15:20,360 --> 00:15:21,299 Ya lo dejo 341 00:15:21,299 --> 00:15:34,230 no ha quedado mal, para ser un flow layout 342 00:15:34,230 --> 00:15:36,129 no ha quedado mal 343 00:15:36,129 --> 00:15:36,429 vale 344 00:15:36,429 --> 00:15:39,950 pues entonces ahora vamos con el comportamiento 345 00:15:39,950 --> 00:15:42,250 vamos a hacer una capturadora 346 00:15:42,250 --> 00:15:44,049 para este y otro capturadora 347 00:15:44,049 --> 00:15:44,830 para este 348 00:15:44,830 --> 00:15:48,149 a ver, podríamos meterlo en la misma capturadora y decir 349 00:15:48,149 --> 00:15:50,090 si el objeto que causó el evento 350 00:15:50,090 --> 00:15:51,950 equals este 351 00:15:51,950 --> 00:15:53,970 jbutton, pues entonces 352 00:15:53,970 --> 00:15:56,029 no sé qué, y si no 353 00:15:56,029 --> 00:15:57,710 es que será este otro 354 00:15:57,710 --> 00:15:59,950 si lo hago así, con un 355 00:15:59,950 --> 00:16:01,909 if y un else, lo único que cambia es que entonces 356 00:16:01,909 --> 00:16:03,909 desde ese evento sí que necesito 357 00:16:03,909 --> 00:16:06,330 el acceso al botón 358 00:16:06,330 --> 00:16:07,950 entonces tendría que sacarlo fuera 359 00:16:07,950 --> 00:16:10,210 tendría que sacar la declaración 360 00:16:10,210 --> 00:16:10,830 de esto fuera 361 00:16:10,830 --> 00:16:13,389 pero en este caso 362 00:16:13,389 --> 00:16:16,129 lo que se hace en el if y en el else 363 00:16:16,129 --> 00:16:17,889 son dos cosas muy distintas 364 00:16:17,889 --> 00:16:19,169 son dos códigos muy distintos 365 00:16:19,169 --> 00:16:21,870 entonces siempre por principio 366 00:16:21,870 --> 00:16:23,909 no hagamos métodos largos 367 00:16:23,909 --> 00:16:26,110 ¿para qué? es mucho mejor 368 00:16:26,110 --> 00:16:28,009 tener un montón de clases pequeñas 369 00:16:28,009 --> 00:16:29,730 que una única clase muy larga 370 00:16:29,730 --> 00:16:33,110 es mejor tener un montón de métodos pequeños 371 00:16:33,110 --> 00:16:34,830 que un único método muy grande 372 00:16:34,830 --> 00:16:37,029 esos son principios de programación básicos 373 00:16:37,029 --> 00:16:39,049 vamos a atomizar todo lo que podamos 374 00:16:39,049 --> 00:16:41,190 y luego ya tú vas llamando a lo que te haga falta 375 00:16:41,190 --> 00:16:42,850 pero es mucho más fácil 376 00:16:42,850 --> 00:16:44,850 seguir una cadena de llamadas a métodos 377 00:16:44,850 --> 00:16:46,769 porque el propio nombre del método 378 00:16:46,769 --> 00:16:48,090 te informa de lo que está pasando 379 00:16:48,090 --> 00:16:50,190 entonces es más fácil seguir una llamada 380 00:16:50,190 --> 00:16:52,549 añade no sé qué 381 00:16:52,549 --> 00:16:54,309 borra esto, borra no sé cuántos 382 00:16:54,309 --> 00:16:56,730 es más fácil seguir una línea de llamada de métodos 383 00:16:56,730 --> 00:16:58,730 que seguir un código con sentencias 384 00:16:58,730 --> 00:17:01,009 java así de largo que te hace todo eso 385 00:17:01,009 --> 00:17:02,009 entonces 386 00:17:02,009 --> 00:17:04,369 en este caso, ¿qué es lo que quiero decir? 387 00:17:05,029 --> 00:17:06,329 ¿para qué hacer dos clases? 388 00:17:06,569 --> 00:17:08,329 ¿para qué hacer una única clase capturadora? 389 00:17:08,670 --> 00:17:10,109 para aglutinar los dos 390 00:17:10,109 --> 00:17:12,369 cuando lo que se hace con el botón 391 00:17:12,369 --> 00:17:14,569 es muy diferente a lo que se hace con el combo box 392 00:17:14,569 --> 00:17:16,049 entonces dentro de la capturadora tendrás 393 00:17:16,049 --> 00:17:18,190 if es el botón, pa pa pa, un chorizo 394 00:17:18,190 --> 00:17:20,650 else, pa pa pa, otro chorizo, pues no, para eso te haces 395 00:17:20,650 --> 00:17:23,049 dos clases y lo separas en dos clases 396 00:17:23,049 --> 00:17:23,789 ¿vale? 397 00:17:24,710 --> 00:17:26,450 bueno, pues entonces vamos a hacernos primero 398 00:17:26,450 --> 00:17:28,230 la clase que va a atender 399 00:17:28,230 --> 00:17:29,349 al botón este de aquí 400 00:17:29,349 --> 00:17:32,750 pues esa clase 401 00:17:32,750 --> 00:17:36,069 si la hacemos como clase interna por comodidad 402 00:17:36,069 --> 00:17:37,069 pues 403 00:17:37,069 --> 00:17:39,890 será la clase para el botoncito 404 00:17:39,890 --> 00:17:41,930 y tiene que 405 00:17:41,930 --> 00:17:43,630 implementar ActionListener 406 00:17:43,630 --> 00:17:45,569 porque el evento que debemos capturar es hacer clic 407 00:17:45,569 --> 00:17:46,710 si fuera otro evento 408 00:17:46,710 --> 00:17:50,269 relacionado con el ratón, con el teclado 409 00:17:50,269 --> 00:17:52,410 con que el botón gane el foco o no lo gane 410 00:17:52,410 --> 00:17:54,569 pues sería MouseListener, KeyListener 411 00:17:54,569 --> 00:17:55,630 FocusListener 412 00:17:55,630 --> 00:17:57,650 pero este es el por defecto, hacer clic 413 00:17:57,650 --> 00:17:59,390 pues entonces ActionListener 414 00:17:59,390 --> 00:18:02,710 sin complicaciones 415 00:18:02,710 --> 00:18:05,450 vale, y ahora 416 00:18:05,450 --> 00:18:07,609 si implementamos ActionListener 417 00:18:07,609 --> 00:18:08,890 pues ya sabemos que 418 00:18:08,890 --> 00:18:11,869 tenemos que implementar 419 00:18:11,869 --> 00:18:13,869 este evento, y este evento 420 00:18:13,869 --> 00:18:15,430 justo es lo que queremos que pase 421 00:18:15,430 --> 00:18:16,769 cuando 422 00:18:16,769 --> 00:18:19,309 cuando se dé al botón 423 00:18:19,309 --> 00:18:21,569 vale, pues cuando se dé al botón entonces 424 00:18:21,569 --> 00:18:23,650 ¿qué queremos que ocurra? cuando se dé al botón 425 00:18:23,650 --> 00:18:25,609 queremos que se cojan 426 00:18:25,609 --> 00:18:27,589 los datos de una película 427 00:18:27,589 --> 00:18:29,509 en este caso serían solo título y director 428 00:18:29,509 --> 00:18:31,029 pero podrían ser más 429 00:18:31,029 --> 00:18:33,750 y esa película quede guardada 430 00:18:33,750 --> 00:18:35,849 entonces ahí ya tengo que empezar a hacer una primera 431 00:18:35,849 --> 00:18:37,769 decisión que esta ya sí que es importante 432 00:18:37,769 --> 00:18:38,990 porque lo que hemos hecho hasta ahora 433 00:18:38,990 --> 00:18:40,930 es el front que se llama 434 00:18:40,930 --> 00:18:43,970 me echo mi aspecto, eso es una tontería 435 00:18:43,970 --> 00:18:45,950 eso es decido, arrastro 436 00:18:45,950 --> 00:18:47,349 y pego, nada más 437 00:18:47,349 --> 00:18:48,910 ese es el front 438 00:18:48,910 --> 00:18:52,089 ahora viene el back, esas son ya las decisiones que cuenta 439 00:18:52,089 --> 00:18:53,589 las que definen 440 00:18:53,589 --> 00:18:55,670 cómo funciona tu aplicación, etc 441 00:18:55,670 --> 00:18:57,630 vale, pues entonces aquí tenemos 442 00:18:57,630 --> 00:18:59,789 la primera decisión de Bach, interesante 443 00:18:59,789 --> 00:19:01,809 que es, vale, yo voy a tener que guardar películas 444 00:19:01,809 --> 00:19:03,849 como lo hago, que diseño 445 00:19:03,849 --> 00:19:05,450 hago, hombre, pues mira 446 00:19:05,450 --> 00:19:07,750 vamos a hacer una clase película para guardarlo 447 00:19:07,750 --> 00:19:09,069 porque si no, ¿qué hago? 448 00:19:09,329 --> 00:19:10,990 guardo los títulos en un list de títulos 449 00:19:10,990 --> 00:19:13,150 los directores en un list de directores 450 00:19:13,150 --> 00:19:15,569 bueno, en este caso, como salen dos campos, podríamos 451 00:19:15,569 --> 00:19:17,369 hacer un map que guarde 452 00:19:17,369 --> 00:19:18,809 la clave, el título 453 00:19:18,809 --> 00:19:20,829 el director, el valor 454 00:19:20,829 --> 00:19:23,569 pero entonces no puede haber dos películas 455 00:19:23,569 --> 00:19:25,329 que se llamen igual, o sea, dos directores 456 00:19:25,329 --> 00:19:27,809 no podrían hacer dos películas con el mismo nombre 457 00:19:27,809 --> 00:19:31,859 claro, si no va a ser ese el caso 458 00:19:31,859 --> 00:19:33,500 pues no hay ningún problema 459 00:19:33,500 --> 00:19:36,039 y por otro lado 460 00:19:36,039 --> 00:19:37,819 si vamos a tener, si esta aplicación 461 00:19:37,819 --> 00:19:39,420 se extiende, llega un momento en que me dicen 462 00:19:39,420 --> 00:19:41,599 oye que extiende la aplicación 463 00:19:41,599 --> 00:19:43,299 pero ahora quiero que de la película me guardes 464 00:19:43,299 --> 00:19:45,619 año, intérpretes, patatín 465 00:19:45,619 --> 00:19:47,720 pues entonces ya tengo que 466 00:19:47,720 --> 00:19:49,740 rehacer mucho la aplicación, ya el map se me 467 00:19:49,740 --> 00:19:51,680 descoloca, muchísimo mejor si me hago una clase 468 00:19:51,680 --> 00:19:53,619 película, me hago una clase película 469 00:19:53,619 --> 00:19:55,920 y así si la aplicación la extiendo le añado una propiedad 470 00:19:55,920 --> 00:19:57,619 a la clase y ya está 471 00:19:57,619 --> 00:19:59,759 pero ese muchísimo mejor 472 00:19:59,759 --> 00:20:02,200 lo digo entre comillas y con matices 473 00:20:02,200 --> 00:20:03,680 son decisiones de diseño 474 00:20:03,680 --> 00:20:06,200 que dependen de todo el 475 00:20:06,200 --> 00:20:08,140 contexto en el que esté trabajando 476 00:20:08,140 --> 00:20:10,339 uno y con quien esté trabajando y quien lo vaya a usar 477 00:20:10,339 --> 00:20:12,319 son muchísimo mejor a coger con pinzas 478 00:20:12,319 --> 00:20:14,200 ¿vale? pero bueno 479 00:20:14,200 --> 00:20:16,640 en general, vamos a guardar datos de películas 480 00:20:16,640 --> 00:20:18,259 pues parece de cajón 481 00:20:18,259 --> 00:20:20,099 hacer una clase película 482 00:20:20,099 --> 00:20:22,339 ¿no? pues venga 483 00:20:22,339 --> 00:20:23,619 vamos a hacer una clase película 484 00:20:23,619 --> 00:20:29,440 entonces yo aquí lo estoy metiendo en el mismo paquete 485 00:20:29,440 --> 00:20:31,819 porque los estoy separando por ejercicio 1, 2, 3 486 00:20:31,819 --> 00:20:33,119 o lo que sea para luego subirlo 487 00:20:33,119 --> 00:20:35,000 pero idealmente iría en otro paquete 488 00:20:35,000 --> 00:20:36,500 en un paquete iría la vista, en otro iría 489 00:20:36,500 --> 00:20:39,559 los métodos a los que llaman los capturadores, etc 490 00:20:39,559 --> 00:20:43,109 vale, pero nos hacemos 491 00:20:43,109 --> 00:20:46,170 una clase película 492 00:20:46,170 --> 00:20:48,529 con dos propiedades 493 00:20:48,529 --> 00:20:56,579 el título 494 00:20:56,579 --> 00:21:06,880 y el director, bueno, como vamos van a ser string 495 00:21:06,880 --> 00:21:10,619 Por ahora son las únicas dos propiedades 496 00:21:10,619 --> 00:21:12,400 Pero esto ya se podría extender a más 497 00:21:12,400 --> 00:21:13,859 Sin un momento dado la aplicación 498 00:21:13,859 --> 00:21:15,539 Hay que escalarla a que las películas 499 00:21:15,539 --> 00:21:16,819 Tengan más datos 500 00:21:16,819 --> 00:21:21,059 Pues nada, los dos constructores 501 00:21:21,059 --> 00:21:22,099 Para facilitarnos 502 00:21:22,099 --> 00:21:24,940 El trabajo 503 00:21:24,940 --> 00:21:38,869 Y GetDeset 504 00:21:38,869 --> 00:21:56,430 Vale, bueno pues ya la clase película está 505 00:21:56,430 --> 00:21:57,690 Entonces ahora 506 00:21:57,690 --> 00:21:59,890 Volvemos a nuestra aplicación 507 00:21:59,890 --> 00:22:01,670 Porque estábamos en el evento 508 00:22:01,670 --> 00:22:02,809 Del botón 509 00:22:02,809 --> 00:22:04,849 que es 510 00:22:04,849 --> 00:22:06,650 este elemento del botón 511 00:22:06,650 --> 00:22:07,950 y que hacíamos aquí 512 00:22:07,950 --> 00:22:10,769 crear una película nueva 513 00:22:10,769 --> 00:22:12,009 con los datos de la aplicación 514 00:22:12,009 --> 00:22:14,869 y ahora habrá que decidir esa peli 515 00:22:14,869 --> 00:22:16,069 donde la guardamos 516 00:22:16,069 --> 00:22:19,369 pero ya crear la película lo podemos hacer 517 00:22:19,369 --> 00:22:20,710 entonces 518 00:22:20,710 --> 00:22:23,109 pues lo primero 519 00:22:23,109 --> 00:22:24,970 que ocurra cuando 520 00:22:24,970 --> 00:22:27,089 le demos al botón 521 00:22:27,089 --> 00:22:29,369 será crear el objeto película 522 00:22:29,369 --> 00:22:32,670 con los datos 523 00:22:32,670 --> 00:22:33,910 que están en las áreas de texto 524 00:22:33,910 --> 00:22:36,170 pues 525 00:22:36,170 --> 00:22:38,690 título era el área de texto 526 00:22:38,690 --> 00:22:40,069 punto gettest 527 00:22:40,069 --> 00:22:45,319 y director punto gettest 528 00:22:45,319 --> 00:22:48,579 vale, entonces 529 00:22:48,579 --> 00:22:50,059 he cogido directamente 530 00:22:50,059 --> 00:22:52,759 lo que hay en las áreas de texto con el gettest 531 00:22:52,759 --> 00:22:55,380 como título 532 00:22:55,380 --> 00:22:58,400 está declarada fuera 533 00:22:58,400 --> 00:23:00,559 del constructor 534 00:23:00,559 --> 00:23:02,440 está declarado fuera, es variable de clase 535 00:23:02,440 --> 00:23:03,539 como está declarado fuera 536 00:23:03,539 --> 00:23:06,500 puedo acceder aquí sin problema a él 537 00:23:06,500 --> 00:23:09,960 si estuviera declarado local al constructor 538 00:23:09,960 --> 00:23:11,839 no podría, pero lo he declarado 539 00:23:11,839 --> 00:23:14,099 fuera precisamente porque iba a necesitar 540 00:23:14,099 --> 00:23:15,880 acceder desde la capturadora 541 00:23:15,880 --> 00:23:17,640 ah, ya tengo mi película 542 00:23:17,640 --> 00:23:19,819 ahora, siguiente decisión 543 00:23:19,819 --> 00:23:21,180 bueno, pues tengo que resolver 544 00:23:21,180 --> 00:23:23,619 dónde van esas películas porque 545 00:23:23,619 --> 00:23:25,779 tienen que estar ahí almacenadas durante todo 546 00:23:25,779 --> 00:23:27,980 el tiempo de vida de la aplicación, porque la aplicación 547 00:23:27,980 --> 00:23:30,259 trabaja con ellas, las consulta 548 00:23:30,259 --> 00:23:31,859 a través del combo box, tienen que 549 00:23:31,859 --> 00:23:32,420 estar en algún lado 550 00:23:32,420 --> 00:23:35,740 lo ideal pues sería, la enchufo 551 00:23:35,740 --> 00:23:37,599 una base de datos, pero claro, no sabemos enchufar 552 00:23:37,599 --> 00:23:39,519 una base de datos, pero sí podemos 553 00:23:39,519 --> 00:23:41,559 habilitar una colección para que se guarden 554 00:23:41,559 --> 00:23:43,700 las películas. Bueno, pues 555 00:23:43,700 --> 00:23:45,619 una colección, la más 556 00:23:45,619 --> 00:23:48,019 sencilla que se nos ocurre para que se guarden las películas 557 00:23:48,019 --> 00:23:49,640 pues podría ser una 558 00:23:49,640 --> 00:23:52,000 lista, ¿vale? Una lista de películas 559 00:23:52,000 --> 00:23:53,720 y si no, podría ser un set 560 00:23:53,720 --> 00:23:54,720 entonces 561 00:23:54,720 --> 00:23:57,539 ¿qué nos hace decidir si es una lista 562 00:23:57,539 --> 00:23:58,460 o un conjunto? 563 00:24:00,680 --> 00:24:02,079 Los duplicados, ¿verdad? 564 00:24:02,720 --> 00:24:05,140 Si queremos que haya duplicados o no queremos que haya 565 00:24:05,140 --> 00:24:05,819 duplicados 566 00:24:05,819 --> 00:24:08,240 porque si yo no voy a meter 567 00:24:08,240 --> 00:24:09,960 nunca una misma película 568 00:24:09,960 --> 00:24:12,259 dos veces, pues entonces puedo usar 569 00:24:12,259 --> 00:24:13,920 un set, que el set 570 00:24:13,920 --> 00:24:16,539 la complejidad interna de uso 571 00:24:16,539 --> 00:24:18,539 para Java es mejor 572 00:24:18,539 --> 00:24:19,920 entonces es más eficiente 573 00:24:19,920 --> 00:24:22,299 para nosotros es lo mismo, es hacer 574 00:24:22,299 --> 00:24:23,859 un add a la colección 575 00:24:23,859 --> 00:24:25,900 un remove, es lo mismo, nos da igual 576 00:24:25,900 --> 00:24:28,259 a efectos de programación, nos da igual un list que un set 577 00:24:28,259 --> 00:24:29,759 porque se usan igual 578 00:24:29,759 --> 00:24:32,640 pero las implicaciones 579 00:24:32,640 --> 00:24:34,319 que tienen a nivel computacional 580 00:24:34,319 --> 00:24:36,380 pues el set es más eficiente, pero a cambio 581 00:24:36,380 --> 00:24:37,500 no puedo meter duplicados 582 00:24:37,500 --> 00:24:39,359 entonces 583 00:24:39,359 --> 00:24:41,980 ahora entraríamos a la siguiente pregunta 584 00:24:41,980 --> 00:24:44,000 ¿qué significa duplicados? 585 00:24:44,119 --> 00:24:45,839 ¿cuál es mi clave primaria de las pelis? 586 00:24:45,960 --> 00:24:48,220 esto de nuevo son decisiones que no es que tengan 587 00:24:48,220 --> 00:24:50,039 una respuesta universal 588 00:24:50,039 --> 00:24:52,299 tienen una respuesta en el contexto 589 00:24:52,299 --> 00:24:54,240 de la aplicación y para cada aplicación 590 00:24:54,240 --> 00:24:56,400 tendrán una, entonces yo en la aplicación 591 00:24:56,400 --> 00:24:58,359 en la que estoy, con el que me la ha pedido me dice 592 00:24:58,359 --> 00:24:58,819 a ver 593 00:24:58,819 --> 00:25:01,819 ¿puede haber dos pelis con el mismo título? 594 00:25:02,940 --> 00:25:03,519 pues sí 595 00:25:03,519 --> 00:25:07,339 Puede haber dos directores que hayan hecho dos pelis 596 00:25:07,339 --> 00:25:08,779 Que se llaman igual, no pasa nada 597 00:25:08,779 --> 00:25:11,359 Puede haber dos directores que hayan hecho dos pelis que se llaman igual 598 00:25:11,359 --> 00:25:15,960 ¿Puede haber un director que pueda hacer dos pelis? 599 00:25:16,599 --> 00:25:18,539 Pues sí, un director puede hacer dos pelis 600 00:25:18,539 --> 00:25:19,839 Entonces en función de lo que nos responda 601 00:25:19,839 --> 00:25:22,700 Si nos responde eso 602 00:25:22,700 --> 00:25:28,559 La clave primaria de las películas sería doble 603 00:25:28,559 --> 00:25:31,140 La clave primaria sería doble 604 00:25:31,140 --> 00:25:33,859 Sería la combinación de título y director 605 00:25:33,859 --> 00:25:35,740 ¿Vale? 606 00:25:36,099 --> 00:25:38,099 Entonces eso es lo que también estáis trabajando 607 00:25:38,099 --> 00:25:38,960 En bases de datos 608 00:25:38,960 --> 00:25:42,579 Hay que decidir cuál es la clave primaria 609 00:25:42,579 --> 00:25:44,279 Que mejor representa 610 00:25:44,279 --> 00:25:45,720 Un modelo de datos 611 00:25:45,720 --> 00:25:48,339 Entonces aquí habría que aclararlo 612 00:25:48,339 --> 00:25:49,660 Con el que nos lo dijera 613 00:25:49,660 --> 00:25:52,660 Oye, para ti la unicidad de las pelis 614 00:25:52,660 --> 00:25:53,160 ¿Cuál es? 615 00:25:53,880 --> 00:25:56,079 El título, el director 616 00:25:56,079 --> 00:25:58,000 La combinación de ambos 617 00:25:58,000 --> 00:25:59,779 La del director no tiene sentido 618 00:25:59,779 --> 00:26:01,960 pero lo normal es que un director haga varias películas 619 00:26:01,960 --> 00:26:03,619 la del título 620 00:26:03,619 --> 00:26:05,440 podría tenerlo, pero hombre 621 00:26:05,440 --> 00:26:07,559 habría que aclarar, oye, a ver 622 00:26:07,559 --> 00:26:09,740 ¿pueden dos directores repetir peli? 623 00:26:10,220 --> 00:26:11,420 repetir título, perdón 624 00:26:11,420 --> 00:26:13,519 bueno, en función de lo que nos diga, decimos 625 00:26:13,519 --> 00:26:14,339 la clave primaria 626 00:26:14,339 --> 00:26:15,579 ¿vale? 627 00:26:17,099 --> 00:26:19,319 pero aquí, ¿qué ocurre en esta aplicación? 628 00:26:19,420 --> 00:26:21,559 que si el tío me dice, no, no, claro que pueden dos 629 00:26:21,559 --> 00:26:23,680 directores hacer una peli al mismo título 630 00:26:23,680 --> 00:26:25,740 pues entonces nos ha planteado 631 00:26:25,740 --> 00:26:26,680 la aplicación muy mal 632 00:26:26,680 --> 00:26:29,579 porque entonces nosotros que estamos analizándola 633 00:26:29,579 --> 00:26:31,740 y no se nos escapa ningún detalle 634 00:26:31,740 --> 00:26:33,759 porque el que nos pide la aplicación se le escapan 635 00:26:33,759 --> 00:26:35,859 mil detalles, porque él quiere algo 636 00:26:35,859 --> 00:26:37,680 y lo normal es que nunca tenga las ideas claras 637 00:26:37,680 --> 00:26:39,839 y te dice, yo quiero que me hagas esto, que haga no sé qué 638 00:26:39,839 --> 00:26:41,640 entonces, el trabajo 639 00:26:41,640 --> 00:26:43,980 del desarrollador 640 00:26:43,980 --> 00:26:45,380 es poner en orden 641 00:26:45,380 --> 00:26:47,839 las ideas confusas que tiene esa persona 642 00:26:47,839 --> 00:26:49,519 que te está pidiendo el software y que seguramente 643 00:26:49,519 --> 00:26:51,480 te está diciendo cosas incoherentes, por ejemplo 644 00:26:51,480 --> 00:26:53,779 aquí rápidamente diríamos, a ver, vamos a ver 645 00:26:53,779 --> 00:26:55,799 si aquí van a ir 646 00:26:55,799 --> 00:26:57,819 los títulos y por título 647 00:26:57,819 --> 00:27:00,220 yo voy a poder seleccionar peli para ver director 648 00:27:00,220 --> 00:27:01,779 no me puedes decir 649 00:27:01,779 --> 00:27:04,599 que dos directores 650 00:27:04,599 --> 00:27:05,799 puedan hacer una peli con el mismo nombre 651 00:27:05,799 --> 00:27:07,680 entonces cuando yo selecciono aquí Harry Potter 652 00:27:07,680 --> 00:27:10,619 si dos directores han hecho una peli que se llama Harry Potter 653 00:27:10,619 --> 00:27:11,740 ¿a cuál te pongo aquí? 654 00:27:13,039 --> 00:27:14,180 entonces ahí ya no sé 655 00:27:14,180 --> 00:27:15,779 habría estado dando un requisito mal 656 00:27:15,779 --> 00:27:16,940 que es lo habitual 657 00:27:16,940 --> 00:27:20,440 bueno pues entonces o se cambia la aplicación 658 00:27:20,440 --> 00:27:21,359 para que sea director 659 00:27:21,359 --> 00:27:22,660 es que lo han hecho, lo vamos a hacer 660 00:27:22,660 --> 00:27:25,839 entonces la clave primaria tiene que ser 661 00:27:25,839 --> 00:27:26,940 el título 662 00:27:26,940 --> 00:27:29,619 ¿verdad? entonces ese análisis 663 00:27:29,619 --> 00:27:31,519 ese análisis ya habría avanzado 664 00:27:31,519 --> 00:27:33,359 un poco para dar forma a la aplicación 665 00:27:33,359 --> 00:27:34,039 que nos han pedido 666 00:27:34,039 --> 00:27:37,700 bueno, entonces lo que de alguna manera quiero deciros 667 00:27:37,700 --> 00:27:39,740 es que hay que pensar mucho 668 00:27:39,740 --> 00:27:41,660 antes de escribir, antes de poner 669 00:27:41,660 --> 00:27:43,660 soluciones, antes de... porque hay que tener muy muy 670 00:27:43,660 --> 00:27:45,559 claro qué se quiere hacer 671 00:27:45,559 --> 00:27:47,599 y sobre todo cuáles son 672 00:27:47,599 --> 00:27:49,660 los requisitos, las condiciones de trabajo 673 00:27:49,660 --> 00:27:51,619 bueno, pues todo esto venía 674 00:27:51,619 --> 00:27:53,839 a cuento de qué decidir, si una lista 675 00:27:53,839 --> 00:27:55,319 y un conjunto, vale 676 00:27:55,319 --> 00:27:56,779 ya hemos dado un paso grande 677 00:27:56,779 --> 00:27:59,299 que es decidir cuál es la clave primaria 678 00:27:59,299 --> 00:28:01,019 de la aplicación, películas 679 00:28:01,019 --> 00:28:02,759 título, perdón, y ahora 680 00:28:02,759 --> 00:28:05,279 vamos a admitir meter la misma 681 00:28:05,279 --> 00:28:06,980 película varias veces 682 00:28:06,980 --> 00:28:11,420 si la aplicación lo necesita 683 00:28:11,420 --> 00:28:13,420 no nos queda más remedio que una lista 684 00:28:13,420 --> 00:28:15,640 pero hombre, esta aplicación 685 00:28:15,640 --> 00:28:17,500 en principio no lo necesitas para meter películas 686 00:28:17,500 --> 00:28:19,380 y según yo las tengo metidas, pues ya van ahí 687 00:28:19,380 --> 00:28:21,380 a la colección y ya está, y una vez que he metido una peli 688 00:28:21,380 --> 00:28:23,160 no la tengo que meter una segunda vez 689 00:28:23,160 --> 00:28:41,319 No parece que sea necesario que una peli esté dos veces metida, ¿no? La misma peli esté dos veces en posiciones distintas de la lista. No parece necesario. Podría serlo en otra aplicación que pidiera otras cosas, pero en esta no lo parece. Bueno, pues podríamos meterlo en un set. Ya está. 690 00:28:41,319 --> 00:28:43,960 pues todo esto es para tomar una decisión 691 00:28:43,960 --> 00:28:46,160 que parece trivial y en una aplicación 692 00:28:46,160 --> 00:28:47,980 pequeña como esta, uno la puede tomar 693 00:28:47,980 --> 00:28:49,880 rápidamente, pero en una aplicación 694 00:28:49,880 --> 00:28:51,779 grande, uno no la toma rápidamente 695 00:28:51,779 --> 00:28:53,519 estas decisiones, las tiene que tomar 696 00:28:53,519 --> 00:28:56,079 muy concienzudamente, porque si no 697 00:28:56,079 --> 00:28:57,720 la aplicación va a ir bien 698 00:28:57,720 --> 00:28:59,759 o va a ir fallando de manera 699 00:28:59,759 --> 00:29:01,680 que no sabes por qué y al final tienes que rehacer 700 00:29:01,680 --> 00:29:02,720 de cero desde el principio 701 00:29:02,720 --> 00:29:05,880 bueno, pues en nuestro caso si hemos hecho el análisis 702 00:29:05,880 --> 00:29:07,779 más o menos con sentido, hemos decidido 703 00:29:07,779 --> 00:29:09,960 que un set, vale, pues esta peli va a ir a un set 704 00:29:09,960 --> 00:29:12,319 ese set, ¿dónde lo ponemos? 705 00:29:12,640 --> 00:29:14,079 pues tiene que ir a un sitio que sea accesible 706 00:29:14,079 --> 00:29:15,380 desde aquí, lógicamente 707 00:29:15,380 --> 00:29:18,359 desde aquí y desde 708 00:29:18,359 --> 00:29:20,240 seguramente más sitios 709 00:29:20,240 --> 00:29:22,319 entonces, hombre, pues podríamos 710 00:29:22,319 --> 00:29:23,640 poner el set aquí 711 00:29:23,640 --> 00:29:26,220 vale, lo que pasa es que eso es feo 712 00:29:26,220 --> 00:29:27,519 lo podemos poner ahí, ya está 713 00:29:27,519 --> 00:29:30,160 pero bueno, eso es feo a nivel 714 00:29:30,160 --> 00:29:32,259 de diseño porque en realidad 715 00:29:32,259 --> 00:29:33,460 esta clase es mi vista 716 00:29:33,460 --> 00:29:35,859 esta clase se refiere a 717 00:29:35,859 --> 00:29:38,579 toda la parte de código que me construye 718 00:29:38,579 --> 00:29:40,680 que entonces poner aquí 719 00:29:40,680 --> 00:29:42,299 el set, bueno, lo ideal sería 720 00:29:42,299 --> 00:29:44,460 que todo relacionado con los datos vaya en una clase 721 00:29:44,460 --> 00:29:46,559 aparte, pues venga, vamos a 722 00:29:46,559 --> 00:29:48,039 hacerlo un poquito mejor 723 00:29:48,039 --> 00:29:50,380 vamos a hacer aquí una clase 724 00:29:50,380 --> 00:29:52,500 que se llame datos 725 00:29:52,500 --> 00:29:56,119 y aquí van a ir los 726 00:29:56,119 --> 00:29:56,420 datos 727 00:29:56,420 --> 00:30:01,890 pues venga, hemos 728 00:30:01,890 --> 00:30:03,430 dicho que en un set, pues en un set 729 00:30:03,430 --> 00:30:10,279 ya de paso lo instanciamos 730 00:30:10,279 --> 00:30:11,640 pues venga, ¿qué tipo de set? 731 00:30:11,640 --> 00:30:12,500 bueno, vamos a 732 00:30:12,500 --> 00:30:15,599 nos viene bien que cuando 733 00:30:15,599 --> 00:30:17,799 yo itere por las pelis aparezcan ordenadas 734 00:30:17,799 --> 00:30:19,640 alfabéticamente o de alguna manera 735 00:30:19,640 --> 00:30:21,579 pues si 736 00:30:21,579 --> 00:30:23,599 nos da igual, un haset 737 00:30:23,599 --> 00:30:25,759 si nos viene bien que aparezcan ordenadas 738 00:30:25,759 --> 00:30:27,079 cuando yo itero un triset 739 00:30:27,079 --> 00:30:29,500 ¿vale? porque recordad 740 00:30:29,500 --> 00:30:31,319 que el triset en la iteración 741 00:30:31,319 --> 00:30:33,160 te lo monta por orden alfabético 742 00:30:33,160 --> 00:30:35,500 el haset, la iteración 743 00:30:35,500 --> 00:30:36,319 te la va sacando 744 00:30:36,319 --> 00:30:39,400 por criterios 745 00:30:39,400 --> 00:30:40,539 que no tienen por qué ser el orden 746 00:30:40,539 --> 00:30:43,720 de los objetos 747 00:30:43,720 --> 00:30:46,900 Vale, pues un headset 748 00:30:46,900 --> 00:30:48,559 Suele ser una opción habitual 749 00:30:48,559 --> 00:30:51,059 Para trabajar con conjuntos 750 00:30:51,059 --> 00:30:56,130 Vale, pues ahora aquí ya 751 00:30:56,130 --> 00:30:57,809 En mi este de aquí 752 00:30:57,809 --> 00:30:59,029 Ya podemos añadir 753 00:30:59,029 --> 00:31:03,910 A los datos 754 00:31:03,910 --> 00:31:05,329 La película 755 00:31:05,329 --> 00:31:11,779 Datos.ad 756 00:31:11,779 --> 00:31:15,150 Película 757 00:31:15,150 --> 00:31:18,819 Uy, que susto que te habías dado 758 00:31:18,819 --> 00:31:23,789 Vale 759 00:31:23,789 --> 00:31:27,549 Uy, datos.ad 760 00:31:27,549 --> 00:31:28,349 Película, que hago yo 761 00:31:28,349 --> 00:31:31,410 datos.peliculas 762 00:31:31,410 --> 00:31:32,029 se llama 763 00:31:32,029 --> 00:31:37,839 .adpelicula 764 00:31:37,839 --> 00:31:40,920 vale, este es mi set 765 00:31:40,920 --> 00:31:43,160 de pelis, variable estática 766 00:31:43,160 --> 00:31:44,819 de la clase, accesible desde cualquier lado 767 00:31:44,819 --> 00:31:45,700 añado la película 768 00:31:45,700 --> 00:31:49,140 vale, esta parte está hecha 769 00:31:49,140 --> 00:31:49,880 ¿hasta aquí vamos bien? 770 00:31:52,380 --> 00:31:53,019 ¿quién ha dicho sí? 771 00:31:56,029 --> 00:31:57,230 ¿tú has dicho sí, Diego? 772 00:31:57,609 --> 00:31:59,009 pues vamos fatal 773 00:31:59,009 --> 00:32:01,369 vamos muy mal 774 00:32:01,369 --> 00:32:04,190 pero admirable que al menos 775 00:32:04,190 --> 00:32:05,049 contestes 776 00:32:05,049 --> 00:32:07,410 eso te lo reconozco 777 00:32:07,410 --> 00:32:10,190 vamos fatalísimo porque estamos 778 00:32:10,190 --> 00:32:12,230 metiendo en un hash set 779 00:32:12,230 --> 00:32:14,130 un objeto 780 00:32:14,130 --> 00:32:15,109 de una clase 781 00:32:15,109 --> 00:32:18,130 que ni hasco, ni igual, ni la madre 782 00:32:18,130 --> 00:32:20,390 que lo trajo, con lo cual ya vamos mal 783 00:32:20,390 --> 00:32:21,450 ¿vale? 784 00:32:21,930 --> 00:32:24,049 entonces desde el momento en el que hemos decidido 785 00:32:24,049 --> 00:32:25,950 que las pelis 786 00:32:25,950 --> 00:32:28,529 las pelis van a ir a un hash set 787 00:32:28,529 --> 00:32:30,369 para que 788 00:32:30,369 --> 00:32:32,529 los métodos que llama el hash set 789 00:32:32,529 --> 00:32:34,390 funcionen correctamente por dentro 790 00:32:34,390 --> 00:32:36,650 película tiene que tener el jasco de equals 791 00:32:36,650 --> 00:32:37,750 porque si no 792 00:32:37,750 --> 00:32:40,470 eso de igualdad de pelis por título 793 00:32:40,470 --> 00:32:42,049 que hemos dicho, eso no 794 00:32:42,049 --> 00:32:44,470 se va a dar, no va a haber 795 00:32:44,470 --> 00:32:46,549 ni una sola película igual a otra, porque la igualdad 796 00:32:46,549 --> 00:32:47,650 va a ser por dirección de memoria 797 00:32:47,650 --> 00:32:50,130 entonces que queremos eliminar una peli 798 00:32:50,130 --> 00:32:52,009 esta aplicación no tiene la misma 799 00:32:52,009 --> 00:32:54,069 la funcionalidad de eliminar películas 800 00:32:54,069 --> 00:32:56,269 pero podría tener un botoncito aquí abajo 801 00:32:56,269 --> 00:32:57,609 que fuera eliminar peli 802 00:32:57,609 --> 00:32:59,289 entonces si yo le doy a eliminar 803 00:32:59,289 --> 00:33:02,289 y no tengo el jasco de equals, pues se me complica 804 00:33:02,289 --> 00:33:03,509 la vida porque no puedo usar el remove 805 00:33:03,509 --> 00:33:06,349 voy a tener que iterar, voy a tener que hacer 806 00:33:06,349 --> 00:33:07,730 una movida, no puedo hacer el remove 807 00:33:07,730 --> 00:33:09,710 entonces vamos mal 808 00:33:09,710 --> 00:33:12,250 si no ponemos el jasco de equals en película 809 00:33:12,250 --> 00:33:18,630 pues venga, y aquí es donde 810 00:33:18,630 --> 00:33:20,690 viene la pregunta, en la fase de análisis 811 00:33:20,690 --> 00:33:22,829 acordamos y acordamos bien 812 00:33:22,829 --> 00:33:24,670 y con criterio, no a lo tonto 813 00:33:24,670 --> 00:33:26,369 ¿cuál era nuestra clave primaria? 814 00:33:26,549 --> 00:33:28,390 sí, la acordamos muy bien, era el título 815 00:33:28,390 --> 00:33:30,609 vale, y la acordamos 816 00:33:30,609 --> 00:33:31,509 porque si no 817 00:33:31,509 --> 00:33:34,630 la interfaz no tenía sentido, si había un combo box 818 00:33:34,630 --> 00:33:36,029 en el que yo podía solucionar por título 819 00:33:36,029 --> 00:33:38,250 no tenía sentido que la clave primaria no fuera 820 00:33:38,250 --> 00:33:39,150 solo el título 821 00:33:39,150 --> 00:33:42,369 pues ahora nos hacemos el jasco de equals 822 00:33:42,369 --> 00:33:44,609 con esa clave primaria que habíamos decidido 823 00:33:44,609 --> 00:33:47,539 venga, ya está 824 00:33:47,539 --> 00:33:49,700 ahora ya 825 00:33:49,700 --> 00:33:50,740 así que vamos bien 826 00:33:50,740 --> 00:33:52,640 vale, ya hemos añadido la película 827 00:33:52,640 --> 00:33:55,440 pero nos falta 828 00:33:55,440 --> 00:34:00,769 nos falta que hemos dicho 829 00:34:00,769 --> 00:34:02,289 que además de añadir película 830 00:34:02,289 --> 00:34:07,160 yo, ala, ahora ya está añadida 831 00:34:07,160 --> 00:34:09,400 pero nos falta que el combo box 832 00:34:09,400 --> 00:34:11,760 se actualice recibiendo ese nuevo título 833 00:34:11,760 --> 00:34:12,800 esto nos falta 834 00:34:12,800 --> 00:34:15,039 bueno, pues entonces ahora es cuando 835 00:34:15,039 --> 00:34:17,480 buscamos en los métodos de ese objeto 836 00:34:17,480 --> 00:34:19,739 que yo he buscado, el combo box 837 00:34:19,739 --> 00:34:21,679 buscamos en los métodos a ver si hay alguno 838 00:34:21,679 --> 00:34:23,500 que por nombre me suene 839 00:34:23,500 --> 00:34:25,219 a incorporar un nuevo elemento 840 00:34:25,219 --> 00:34:27,679 o busco en los 841 00:34:27,679 --> 00:34:28,880 métodos a ver que me suena 842 00:34:28,880 --> 00:34:31,340 o me voy directamente a la documentación 843 00:34:31,340 --> 00:34:33,699 y lo busco, que siempre sería lo más seguro, claro 844 00:34:33,699 --> 00:34:37,539 vosotros en vuestro caso, pues se lo preguntaríais 845 00:34:37,539 --> 00:34:38,820 a HGPT, pero 846 00:34:38,820 --> 00:34:40,820 así no aprenderíais 847 00:34:40,820 --> 00:34:43,179 Vale, pues venga 848 00:34:43,179 --> 00:34:44,940 El combo box, ¿cómo se llamaba? 849 00:34:45,119 --> 00:34:45,940 Se llamaba 850 00:34:45,940 --> 00:34:51,639 Se llamaba lista películas 851 00:34:51,639 --> 00:34:56,630 Pues venga, lista películas 852 00:34:56,630 --> 00:35:06,059 Lista películas 853 00:35:06,059 --> 00:35:08,300 Vamos a ver qué puedo hacer yo con un combo box 854 00:35:08,300 --> 00:35:09,239 Qué puedo hacer 855 00:35:09,239 --> 00:35:12,780 Añadir un componente 856 00:35:12,780 --> 00:35:14,280 Pero add, bueno, add 857 00:35:14,280 --> 00:35:16,099 Sí, add se parece a lo que yo quiero 858 00:35:16,099 --> 00:35:18,139 Pero es añadir componente 859 00:35:18,139 --> 00:35:19,260 Esto es medio raro 860 00:35:19,260 --> 00:35:21,139 entonces 861 00:35:21,139 --> 00:35:28,659 la única en la que en realidad 862 00:35:28,659 --> 00:35:30,639 me aparece añadir un objeto cualquiera 863 00:35:30,639 --> 00:35:32,679 es add item 864 00:35:32,679 --> 00:35:34,800 entonces hombre, aquí lo normal es que 865 00:35:34,800 --> 00:35:36,739 uff, no tengo yo muy claro 866 00:35:36,739 --> 00:35:37,239 cuál será 867 00:35:37,239 --> 00:35:40,519 uno lo busca en la ayuda, lo busca y en medio 868 00:35:40,519 --> 00:35:42,579 segundo dice, ah, lo que yo estoy buscando es 869 00:35:42,579 --> 00:35:43,119 add item 870 00:35:43,119 --> 00:35:46,380 ¿vale? pues venga 871 00:35:46,380 --> 00:35:48,219 añade un nuevo item 872 00:35:48,219 --> 00:35:49,679 a tu desplegable 873 00:35:49,679 --> 00:35:51,539 Vamos a añadir un nuevo ítem 874 00:35:51,539 --> 00:35:53,679 Y que 875 00:35:53,679 --> 00:35:56,260 A ver, vamos a cerrar esto 876 00:35:56,260 --> 00:35:59,000 Y que quiero añadir yo aquí 877 00:35:59,000 --> 00:36:00,559 Quiero añadir el título de la película 878 00:36:00,559 --> 00:36:01,659 Porque eso es lo que quiero 879 00:36:01,659 --> 00:36:02,760 Que me aparezca en 880 00:36:02,760 --> 00:36:05,699 Película.getTítulo 881 00:36:05,699 --> 00:36:07,420 Eso es lo que quiero que me aparezca 882 00:36:07,420 --> 00:36:08,059 Vale 883 00:36:08,059 --> 00:36:11,059 Vale, aquí de nuevo 884 00:36:11,059 --> 00:36:12,320 Me aparece esto en amarillo 885 00:36:12,320 --> 00:36:16,159 Eso de nuevo es una especie de 886 00:36:16,159 --> 00:36:17,760 Cosa que me dejo ahí apuntada 887 00:36:17,760 --> 00:36:19,139 Esto que me dice 888 00:36:19,139 --> 00:36:20,659 Igual tendría que tenerlo en cuenta 889 00:36:20,659 --> 00:36:21,719 Me dice que ComboBox 890 00:36:21,719 --> 00:36:23,760 Mejor si la parametrizo 891 00:36:23,760 --> 00:36:25,320 Ahora volvemos sobre ello 892 00:36:25,320 --> 00:36:27,360 Por ahora vamos nosotros resolviendo 893 00:36:27,360 --> 00:36:28,780 Sobreviviendo a la aplicación 894 00:36:28,780 --> 00:36:29,320 A ver 895 00:36:29,320 --> 00:36:33,820 Vale, vamos a ver si esta parte del botón 896 00:36:33,820 --> 00:36:35,000 Ya hace lo que tiene que hacer 897 00:36:35,000 --> 00:36:35,980 Eso es lo siguiente 898 00:36:35,980 --> 00:36:37,460 La parte del botón yo creo que ya está toda 899 00:36:37,460 --> 00:36:39,800 Vamos a ver si la parte del botón 900 00:36:39,800 --> 00:36:43,820 Hace lo que tenía que hacer 901 00:36:43,820 --> 00:36:45,139 Entonces 902 00:36:45,139 --> 00:36:56,659 Pues venga, esta es mi aplicación 903 00:36:56,659 --> 00:36:58,360 Venga, vamos a añadir una película 904 00:36:58,360 --> 00:37:01,039 Pepito que dirigió 905 00:37:01,039 --> 00:37:03,460 La luna 906 00:37:03,460 --> 00:37:05,440 Añadir peli 907 00:37:05,440 --> 00:37:08,829 Pues aquí no ha añadido la película 908 00:37:08,829 --> 00:37:10,210 ¿Vale? 909 00:37:11,449 --> 00:37:12,829 ¿Qué puede habernos pasado? 910 00:37:12,989 --> 00:37:14,449 Para haber cometido este fallo que digo 911 00:37:14,449 --> 00:37:16,070 Pero como puede ser, si yo lo he hecho todo bien 912 00:37:16,070 --> 00:37:17,409 ¿Qué nos puede haber pasado? 913 00:37:18,989 --> 00:37:19,250 ¿Vale? 914 00:37:19,349 --> 00:37:22,670 Os voy a repasar el código de espacio de arriba a abajo 915 00:37:22,670 --> 00:37:24,849 Yo tengo aquí mi constructor 916 00:37:24,849 --> 00:37:27,869 Ahí está construida la interfaz 917 00:37:27,869 --> 00:37:29,170 Tengo aquí la capturadora 918 00:37:29,170 --> 00:37:36,610 No era asociar el evento al botón 919 00:37:36,610 --> 00:37:38,309 Efectivamente 920 00:37:38,309 --> 00:37:39,650 ¿Vale? 921 00:37:43,050 --> 00:37:43,489 Entonces 922 00:37:43,489 --> 00:37:44,769 Botón 923 00:37:44,769 --> 00:37:47,090 Toda esta serie de 924 00:37:47,090 --> 00:37:49,730 Despistes y cosas 925 00:37:49,730 --> 00:37:51,730 Que se hacen continuamente 926 00:37:51,730 --> 00:37:53,210 Que no se hagan perder el tiempo 927 00:37:53,210 --> 00:37:55,769 Que no se hagan ya rápidamente 928 00:37:55,769 --> 00:37:58,230 La primera vez que uno lo comete ya lo automatiza 929 00:37:58,230 --> 00:38:00,469 Pero tenéis que automatizarlo para que no se hagan perder el tiempo 930 00:38:00,469 --> 00:38:02,070 Sobre todo un examen 931 00:38:02,070 --> 00:38:03,710 Pues nada 932 00:38:03,710 --> 00:38:06,110 al botoncito, le añadimos el ActionListener 933 00:38:06,110 --> 00:38:06,489 New 934 00:38:06,489 --> 00:38:09,889 y se llama Captura Botón 935 00:38:09,889 --> 00:38:20,460 vamos a volver a probar 936 00:38:20,460 --> 00:38:33,719 vale, pues venga 937 00:38:33,719 --> 00:38:35,840 vamos a ver si Pepito que dirigió 938 00:38:35,840 --> 00:38:37,800 lo estoy haciendo al revés, la luna 939 00:38:37,800 --> 00:38:39,119 que la dirigió Pepito 940 00:38:39,119 --> 00:38:42,440 se me añade 941 00:38:42,440 --> 00:38:44,519 vale, ya tengo ahí una peli 942 00:38:44,519 --> 00:38:47,000 venga, y vamos a ver 943 00:38:47,000 --> 00:38:48,260 si esta otra peli 944 00:38:48,260 --> 00:38:51,480 Que dirigió Juanito 945 00:38:51,480 --> 00:38:53,239 Pues sí, vale, ahí está 946 00:38:53,239 --> 00:38:55,579 Añadida 947 00:38:55,579 --> 00:38:57,659 Vale, entonces uno ya podría 948 00:38:57,659 --> 00:38:59,519 Jugar con esto, hacer mil cosas 949 00:38:59,519 --> 00:39:01,699 Decidir en qué orden aparecen 950 00:39:01,699 --> 00:39:03,639 Ahí, bueno, mil historias 951 00:39:03,639 --> 00:39:05,179 Pero todo esto ya es investigación 952 00:39:05,179 --> 00:39:06,739 Vale, bueno, pues esta parte ya está 953 00:39:06,739 --> 00:39:09,239 ¿Qué parte nos falta? Este 954 00:39:09,239 --> 00:39:11,980 Bueno, le he dado aquí tantas veces que me ha aparecido 955 00:39:11,980 --> 00:39:15,639 Tropecientas mil veces en el 956 00:39:15,639 --> 00:39:16,840 Combo Box, con lo cual aquí 957 00:39:16,840 --> 00:39:20,079 Aquí he tenido 958 00:39:20,079 --> 00:39:21,619 Esto es un error de la aplicación, ¿verdad? 959 00:39:22,000 --> 00:39:23,179 O sea, esto cuando uno hace la prueba 960 00:39:23,179 --> 00:39:25,920 Esto a lo mejor lo ha hecho uno y lo pasa a la fase de pruebas 961 00:39:25,920 --> 00:39:27,300 Y cuando uno hace la prueba me dice 962 00:39:27,300 --> 00:39:30,619 Eh, oye, ¿no habíamos quedado que el sol era clave primaria? 963 00:39:32,539 --> 00:39:34,619 Perdona, pues no añadas al combo box 964 00:39:34,619 --> 00:39:35,900 Un título que ya está 965 00:39:35,900 --> 00:39:37,940 Entonces yo esto lo he hecho muy alegremente 966 00:39:37,940 --> 00:39:39,300 Entonces esto sería un bug 967 00:39:39,300 --> 00:39:41,579 Que hay que arreglar, ¿verdad? 968 00:39:41,579 --> 00:39:43,460 Esto es algo que saldría en la fase de pruebas 969 00:39:43,460 --> 00:39:45,820 Cuidado, que yo lo estoy dando aquí 970 00:39:45,820 --> 00:39:48,280 entonces 971 00:39:48,280 --> 00:39:55,880 este 972 00:39:55,880 --> 00:39:58,360 add item de aquí 973 00:39:58,360 --> 00:40:00,159 este add item de aquí 974 00:40:00,159 --> 00:40:01,940 no tiene que ser 975 00:40:01,940 --> 00:40:04,980 incondicional 976 00:40:04,980 --> 00:40:06,199 tiene que ser 977 00:40:06,199 --> 00:40:09,000 añade esta película al combo box 978 00:40:09,000 --> 00:40:10,519 si no está previamente 979 00:40:10,519 --> 00:40:12,039 si no está previamente 980 00:40:12,039 --> 00:40:14,159 ¿vale? entonces 981 00:40:14,159 --> 00:40:21,489 esto lo dejo aquí 982 00:40:21,489 --> 00:40:23,769 para que sea un problema que resolváis 983 00:40:23,769 --> 00:40:24,489 vosotros 984 00:40:24,489 --> 00:40:27,650 si no metemos el mismo título la aplicación funciona igual 985 00:40:27,650 --> 00:40:29,630 funciona bien, lo dejo aquí para que 986 00:40:29,630 --> 00:40:31,210 sea un problema que se os quede planteado a vosotros 987 00:40:31,210 --> 00:40:32,269 como resolveríais, vale 988 00:40:32,269 --> 00:40:34,710 y ahora resuelto ese problema 989 00:40:34,710 --> 00:40:37,130 de mal funcionamiento de la aplicación 990 00:40:37,130 --> 00:40:38,269 nos quedaría el evento 991 00:40:38,269 --> 00:40:40,889 de el combo box 992 00:40:40,889 --> 00:40:42,730 vamos a parar un momentito y lo 993 00:40:42,730 --> 00:40:44,510 hacemos luego