1 00:00:01,000 --> 00:00:06,879 Vale, pues a ver, primera cosa, por ejemplo, voy a cerrar yo todo lo que tengo aquí. 2 00:00:14,599 --> 00:00:18,019 Vale, pues venga, ahora sí, se ve y nos escuchamos, ¿no? 3 00:00:18,579 --> 00:00:21,620 Sí, vaya pues despertando, ¿vale? 4 00:00:21,879 --> 00:00:22,899 Que ahora sí que empezamos. 5 00:00:23,640 --> 00:00:26,480 Bueno, pues entonces, primera cosa interesante, 6 00:00:26,480 --> 00:00:29,359 imaginad que vosotros 7 00:00:29,359 --> 00:00:33,240 habéis hecho ya 8 00:00:33,240 --> 00:00:35,359 un frame, pero lo habéis 9 00:00:35,359 --> 00:00:36,520 hecho con el window builder 10 00:00:36,520 --> 00:00:39,299 new other window builder 11 00:00:39,299 --> 00:00:41,119 habéis puesto un frame y ya lo habéis hecho 12 00:00:41,119 --> 00:00:43,219 y ya está, y habéis cerrado 13 00:00:43,219 --> 00:00:45,200 ya ese proyecto, habéis cerrado esa clase 14 00:00:45,200 --> 00:00:46,299 porque habéis hecho otra cosa 15 00:00:46,299 --> 00:00:48,579 y ahora la queréis volver a abrir 16 00:00:48,579 --> 00:00:50,219 por ejemplo, mi caso 17 00:00:50,219 --> 00:00:52,659 este es el proyecto que hicimos el viernes 18 00:00:52,659 --> 00:00:55,179 que solamente tenía la vista, los botones 19 00:00:55,179 --> 00:00:56,219 puestos y ya está 20 00:00:56,219 --> 00:00:57,840 y esta era mi clase 21 00:00:57,840 --> 00:01:00,140 mi frame, no, mi frame era esta 22 00:01:00,140 --> 00:01:00,700 ventana 23 00:01:00,700 --> 00:01:03,140 esta era mi frame, ventana 24 00:01:03,140 --> 00:01:05,379 entonces yo abro ventana para continuarlo 25 00:01:05,379 --> 00:01:09,000 y 26 00:01:09,000 --> 00:01:14,260 no, no, pero era 27 00:01:14,260 --> 00:01:15,239 el que 28 00:01:15,239 --> 00:01:24,019 suficiente, no necesitamos 29 00:01:24,019 --> 00:01:24,799 a nadie más 30 00:01:24,799 --> 00:01:27,780 nos las entendimos 31 00:01:30,120 --> 00:01:31,540 No, no, no, no, estoy muy a gusto. 32 00:01:37,680 --> 00:01:39,579 Vale, bueno, pues entonces, esta era 33 00:01:39,579 --> 00:01:41,920 la clase que hicimos, de la que hicimos 34 00:01:41,920 --> 00:01:43,340 solamente la vista para 35 00:01:43,340 --> 00:01:46,019 usar el Window Builder y ver un poquito 36 00:01:46,019 --> 00:01:47,840 cómo se usaba. Entonces, yo ya tengo 37 00:01:47,840 --> 00:01:49,480 cerrada, yo ya tengo cerrada 38 00:01:49,480 --> 00:01:51,579 esta clase 39 00:01:51,579 --> 00:01:53,560 y quiero seguir trabajando en ella. 40 00:01:54,159 --> 00:01:55,659 Bueno, pues, le hago 41 00:01:55,659 --> 00:01:57,700 Mario y Daniel, silencio, 42 00:01:58,599 --> 00:01:59,879 le hago doble clic y la abro. 43 00:02:00,120 --> 00:02:03,879 entonces hago doble clic y la abro 44 00:02:03,879 --> 00:02:07,980 y se me ha abierto la pestaña diseño 45 00:02:07,980 --> 00:02:10,639 pero porque yo estaba en el mismo eclipse, pero vosotros a lo mejor 46 00:02:10,639 --> 00:02:15,520 abrís esta clase en otro eclipse, en el eclipse de vuestra casa 47 00:02:15,520 --> 00:02:20,000 o habéis hecho el proyecto en vuestra casa y lo abrís aquí, y esta pestaña no se os va a abrir 48 00:02:20,000 --> 00:02:23,340 entonces decís, y ahora como continúo yo con mi diseño 49 00:02:23,340 --> 00:02:28,099 pues entonces, en lugar de abrirla con doble clic 50 00:02:28,099 --> 00:02:30,460 os acordáis de abrirla con 51 00:02:30,460 --> 00:02:32,680 botón derecho, open with 52 00:02:32,680 --> 00:02:35,139 window builder editor 53 00:02:35,139 --> 00:02:35,900 ¿vale? 54 00:02:36,560 --> 00:02:38,259 entonces, primera cosita 55 00:02:38,259 --> 00:02:40,639 si cuando uno abre una clase 56 00:02:40,639 --> 00:02:42,219 que ha hecho con el window builder 57 00:02:42,219 --> 00:02:44,419 con la pestañita de diseño y todo eso 58 00:02:44,419 --> 00:02:46,919 cuando uno la abre, no se le 59 00:02:46,919 --> 00:02:48,219 abre la pestaña diseño 60 00:02:48,219 --> 00:02:51,060 que perfectamente puede ocurrir 61 00:02:51,060 --> 00:02:53,259 que no se le habilite esta pestaña 62 00:02:53,259 --> 00:02:55,199 pues porque está en otro eclipse 63 00:02:55,199 --> 00:02:56,159 o por lo que sea 64 00:02:56,159 --> 00:02:58,860 pues entonces lo que tiene que hacer es 65 00:02:58,860 --> 00:03:00,120 abrirla, hacer 66 00:03:00,120 --> 00:03:03,379 open with y window builder 67 00:03:03,379 --> 00:03:05,099 y entonces ahora ya sí que 68 00:03:05,099 --> 00:03:06,900 se va a abrir, sí o sí, se va a habilitar 69 00:03:06,900 --> 00:03:07,900 sí o sí esa pestaña 70 00:03:07,900 --> 00:03:09,460 bueno 71 00:03:09,460 --> 00:03:13,199 pues entonces 72 00:03:13,199 --> 00:03:15,020 nosotros 73 00:03:15,020 --> 00:03:17,080 hicimos la vista solamente, si abrimos 74 00:03:17,080 --> 00:03:18,080 la pestaña diseño 75 00:03:18,080 --> 00:03:21,060 esto es lo único que hicimos 76 00:03:21,060 --> 00:03:22,180 poner los componentes 77 00:03:22,180 --> 00:03:25,039 introducir nombre, aquí el área de texto para poner 78 00:03:25,039 --> 00:03:27,360 el nombre y aquí el botoncito para borrar, ¿vale? 79 00:03:28,219 --> 00:03:34,580 Entonces, fijaos que aquí a la izquierda aparecen todos los 80 00:03:34,580 --> 00:03:37,060 componentes que habéis metido. 81 00:03:38,659 --> 00:03:42,180 Aparecen todos y aparecen además jerárquicamente si uno está en 82 00:03:42,180 --> 00:03:44,939 algún contenedor, pues, aparece colgando ese contenedor. 83 00:03:46,000 --> 00:03:49,199 Entonces, ¿por qué es importante esta ventanita? 84 00:03:49,639 --> 00:03:52,099 Por ejemplo, cuando nosotros añadimos un componente, 85 00:03:52,180 --> 00:03:53,039 lo añadimos a un panel. 86 00:03:53,919 --> 00:03:56,939 Entonces, para asegurarnos de que lo que está aquí seleccionado es el panel, 87 00:03:57,099 --> 00:03:58,120 lo mejor es marcarlo aquí. 88 00:03:59,599 --> 00:04:00,000 ¿Vale? 89 00:04:01,020 --> 00:04:03,460 Entonces, puede ser que tengamos varios paneles, 90 00:04:03,520 --> 00:04:06,199 como ahora podemos hacer un ejercicio cualquiera, varios paneles. 91 00:04:06,659 --> 00:04:10,060 Entonces, ¿cómo sé yo qué panel es el que está aquí activo? 92 00:04:10,120 --> 00:04:11,000 Pues lo marcáis aquí. 93 00:04:11,620 --> 00:04:12,479 Ah, vale, ya está. 94 00:04:13,300 --> 00:04:14,400 Ese es el panel que estoy trabajando. 95 00:04:14,400 --> 00:04:16,319 Y ahora ya añadís cosas y lo que sea. 96 00:04:17,319 --> 00:04:19,540 Aquí en este caso tenemos el frame, 97 00:04:20,540 --> 00:04:22,439 un panel colgando del frame, 98 00:04:23,040 --> 00:04:24,839 Y cuatro componentes. 99 00:04:25,879 --> 00:04:26,879 ¿Vale? No tenemos más. 100 00:04:28,279 --> 00:04:29,939 En texto introduzca nombre, 101 00:04:30,180 --> 00:04:31,800 el cambio de color y el botón de borrar. 102 00:04:31,899 --> 00:04:32,379 Esto es muy bueno. 103 00:04:34,079 --> 00:04:35,420 Ay, si hubieras venido el viernes. 104 00:04:36,899 --> 00:04:37,759 ¿Con Andrea? 105 00:04:38,240 --> 00:04:40,100 Si hubieras venido el viernes con tus amigas. 106 00:04:40,899 --> 00:04:41,980 Claro, una hora y media 107 00:04:41,980 --> 00:04:42,639 podría ponernos. 108 00:04:42,939 --> 00:04:43,879 Por ejemplo. 109 00:04:45,000 --> 00:04:46,519 Pero lo que te habría compensado, ¿eh? 110 00:04:46,560 --> 00:04:47,480 Y un recreo. 111 00:04:48,360 --> 00:04:49,939 Lo que habrías disfrutado con ellas. 112 00:04:50,860 --> 00:04:52,519 Bueno, eso. 113 00:04:53,040 --> 00:04:58,300 Vale, pues a ver 114 00:04:58,300 --> 00:05:00,100 Cuando vosotros seleccionáis 115 00:05:00,100 --> 00:05:02,600 Un componente cualquiera 116 00:05:02,600 --> 00:05:03,699 Un componente 117 00:05:03,699 --> 00:05:07,139 Aparte de que veis que ese componente se queda seleccionado aquí 118 00:05:07,139 --> 00:05:08,600 Aquí en la 119 00:05:08,600 --> 00:05:11,220 Ventanita hasta de abajo 120 00:05:11,220 --> 00:05:12,339 Que pone propiedades 121 00:05:12,339 --> 00:05:15,019 Pues aparecen todas las propiedades 122 00:05:15,019 --> 00:05:15,959 De ese componente 123 00:05:15,959 --> 00:05:18,699 O de ese panel o de ese elemento en general 124 00:05:18,699 --> 00:05:19,819 ¿Vale? 125 00:05:20,740 --> 00:05:22,019 Por ejemplo, selecciono el frame 126 00:05:22,019 --> 00:05:23,899 pues me aparece a qué clase 127 00:05:23,899 --> 00:05:25,899 pertenece y las propiedades 128 00:05:25,899 --> 00:05:27,899 que tenga, si está habilitado 129 00:05:27,899 --> 00:05:29,759 no está habilitado, cuál es su color 130 00:05:29,759 --> 00:05:31,240 de fondo, de todo 131 00:05:31,240 --> 00:05:33,000 el panel 132 00:05:33,000 --> 00:05:35,620 seleccione el panel, pues su nombre, ¿cuál es? 133 00:05:35,720 --> 00:05:38,079 pues panel principal, ese es el nombre de la variable 134 00:05:38,079 --> 00:05:40,079 que yo le quiero 135 00:05:40,079 --> 00:05:41,680 cambiar el nombre de la variable porque no me gusta 136 00:05:41,680 --> 00:05:42,759 el nombre panel principal 137 00:05:42,759 --> 00:05:46,100 pues le cambio el nombre de la variable 138 00:05:46,100 --> 00:05:47,959 mi panel 139 00:05:47,959 --> 00:05:49,860 ala, le cambio 140 00:05:49,860 --> 00:05:51,420 el nombre de la variable, si ahora me voy a 141 00:05:51,420 --> 00:05:53,759 fuente otra vez a la pestaña de fuente 142 00:05:53,759 --> 00:05:55,439 veo que efectivamente 143 00:05:55,439 --> 00:05:57,519 ha cambiado, ahora se llama 144 00:05:57,519 --> 00:05:58,079 mi panel 145 00:05:58,079 --> 00:06:01,639 bueno pues 146 00:06:01,639 --> 00:06:03,560 entonces desde esta ventanita de propiedades 147 00:06:03,560 --> 00:06:05,360 yo puedo cambiar muchas cosas 148 00:06:05,360 --> 00:06:07,500 de cada uno de los elementos de la interfaz 149 00:06:07,500 --> 00:06:09,759 repito, uno de ellos 150 00:06:09,759 --> 00:06:11,980 el primero que aparece es el nombre de la variable 151 00:06:11,980 --> 00:06:13,519 el nombre que tiene 152 00:06:13,519 --> 00:06:14,959 ese componente en el código 153 00:06:14,959 --> 00:06:17,839 porque el window builder cuando tú le pones 154 00:06:17,839 --> 00:06:20,259 cosas te pone nombres muy feos por defecto 155 00:06:20,259 --> 00:06:22,279 Jbutton 1, Jbutton no sé qué 156 00:06:22,279 --> 00:06:24,480 Pues hombre, mejor vamos aquí y lo cambiamos 157 00:06:24,480 --> 00:06:28,199 Vale, entonces lo de los colorcitos 158 00:06:28,199 --> 00:06:30,040 Pues es que aquí abajo en propiedades 159 00:06:30,040 --> 00:06:31,980 Tienes todo lo que puedes cambiar de un componente 160 00:06:31,980 --> 00:06:33,879 Entonces aquí en esta área, por ejemplo 161 00:06:33,879 --> 00:06:36,139 El panel, vamos a cambiarle 162 00:06:36,139 --> 00:06:38,240 El background 163 00:06:38,240 --> 00:06:40,420 Pues le ponemos 164 00:06:40,420 --> 00:06:41,839 Aquí, venga 165 00:06:41,839 --> 00:06:43,800 ¿Qué color quieres para el background? 166 00:06:44,759 --> 00:06:45,639 Pues le quiero 167 00:06:45,639 --> 00:06:46,899 Rosy 168 00:06:46,899 --> 00:06:49,420 Aceptar 169 00:06:49,420 --> 00:06:56,079 vale, ya está rosa 170 00:06:56,079 --> 00:06:58,300 entonces, ahora efectivamente 171 00:06:58,300 --> 00:06:59,480 si nos vamos a fuente 172 00:06:59,480 --> 00:07:01,519 se habrá generado un código 173 00:07:01,519 --> 00:07:03,899 con el método cambiar el color, este 174 00:07:03,899 --> 00:07:08,339 en lugar de hacerlo yo a mano con el set background 175 00:07:08,339 --> 00:07:10,379 pues lo he hecho desde el builder 176 00:07:10,379 --> 00:07:12,139 ¿vale? el builder es una 177 00:07:12,139 --> 00:07:14,079 manera cómoda de generar 178 00:07:14,079 --> 00:07:15,939 el código automáticamente, pero obviamente 179 00:07:15,939 --> 00:07:17,879 no es necesario, podríamos haber llamado 180 00:07:17,879 --> 00:07:19,300 a este método y listo 181 00:07:19,300 --> 00:07:22,220 creado un objeto color con las coordenadas 182 00:07:22,220 --> 00:07:23,860 de color red, amarillo, 183 00:07:24,180 --> 00:07:25,980 red, blue y green, que sean. 184 00:07:26,800 --> 00:07:27,300 Y ya está. 185 00:07:28,959 --> 00:07:29,399 ¿Vale? 186 00:07:30,699 --> 00:07:31,779 Bueno, pues ya está. 187 00:07:32,319 --> 00:07:34,560 Uno aquí va poniendo componentes, 188 00:07:35,040 --> 00:07:36,579 va explorando en las propiedades 189 00:07:36,579 --> 00:07:38,360 lo que quiere cambiar de ellos 190 00:07:38,360 --> 00:07:40,620 y ya construye la vista que le da la gana. 191 00:07:40,740 --> 00:07:41,959 Queremos hacer un preview de la vista 192 00:07:41,959 --> 00:07:42,959 por este botoncito. 193 00:07:43,660 --> 00:07:45,079 ¡Hala! Pues sí, una vista muy bonita. 194 00:07:46,300 --> 00:07:47,500 Vale. Entonces, 195 00:07:48,759 --> 00:07:49,579 comportamiento 196 00:07:49,579 --> 00:07:50,860 de esta interfaz. 197 00:07:50,860 --> 00:07:53,740 pues nosotros ahora ya podríamos pasar del window builder 198 00:07:53,740 --> 00:07:56,000 y ya está, e irnos aquí a la pestaña 199 00:07:56,000 --> 00:07:57,779 de fuente y hacer 200 00:07:57,779 --> 00:07:59,920 nuestra clase interna 201 00:07:59,920 --> 00:08:01,920 con el 202 00:08:01,920 --> 00:08:03,879 listener, asociarlo 203 00:08:03,879 --> 00:08:04,579 al 204 00:08:04,579 --> 00:08:07,620 componente que fuera y ya está 205 00:08:07,620 --> 00:08:09,779 lo único que hemos hecho con el builder es 206 00:08:09,779 --> 00:08:11,819 todo esto, que es poner los 207 00:08:11,819 --> 00:08:13,939 componentes, darles el tamaño y lo que fuera 208 00:08:13,939 --> 00:08:14,860 vale 209 00:08:14,860 --> 00:08:17,040 bueno 210 00:08:17,040 --> 00:08:19,420 pero el builder 211 00:08:19,420 --> 00:08:21,139 también nos permite 212 00:08:21,139 --> 00:08:23,500 cómodamente 213 00:08:23,500 --> 00:08:25,199 crear los listeners. 214 00:08:26,220 --> 00:08:26,560 ¿Verdad? 215 00:08:27,199 --> 00:08:28,980 Venga, despierta, date un chute del pegamento 216 00:08:28,980 --> 00:08:29,699 y va arriba. 217 00:08:32,549 --> 00:08:33,230 Despierta. 218 00:08:35,070 --> 00:08:36,509 Bueno, pues venga, por ejemplo, 219 00:08:37,549 --> 00:08:38,750 vamos a 220 00:08:38,750 --> 00:08:40,309 darle comportamiento a este 221 00:08:40,309 --> 00:08:41,629 ejemplo. 222 00:08:42,929 --> 00:08:43,590 Aquí era 223 00:08:43,590 --> 00:08:46,370 el text field. 224 00:08:46,970 --> 00:08:48,629 El text field queríamos 225 00:08:48,629 --> 00:08:50,029 que cuando diéramos al enter 226 00:08:50,029 --> 00:08:53,309 se contara la cantidad de caracteres 227 00:08:53,309 --> 00:08:54,350 que tiene el texto, etc. 228 00:08:55,730 --> 00:08:57,509 Vale, pues 229 00:08:57,509 --> 00:08:59,350 ese es el evento por defecto 230 00:08:59,350 --> 00:09:01,250 del text field. Pues ahora 231 00:09:01,250 --> 00:09:02,529 seleccionamos el text field 232 00:09:02,529 --> 00:09:04,730 botón derecho 233 00:09:04,730 --> 00:09:07,269 en el botón derecho vemos que 234 00:09:07,269 --> 00:09:09,389 nos aparece varias cosas 235 00:09:09,389 --> 00:09:10,710 una de ellas 236 00:09:10,710 --> 00:09:13,230 de lo que nos aparece en el contextual del botón 237 00:09:13,230 --> 00:09:15,610 derecho es, añádeme un manejador de eventos 238 00:09:15,610 --> 00:09:17,509 justo lo que queremos, un manejador 239 00:09:17,509 --> 00:09:19,230 para el evento del text field, darle a lente 240 00:09:19,230 --> 00:09:21,509 añade un manejador de eventos 241 00:09:21,509 --> 00:09:23,509 vale, ¿y qué tipo de evento 242 00:09:23,509 --> 00:09:25,610 es el tuyo? ¿es por defecto? 243 00:09:26,090 --> 00:09:27,610 pues si es el evento por defecto 244 00:09:27,610 --> 00:09:29,730 este, el Action Performer 245 00:09:29,730 --> 00:09:30,990 que ya sabemos que es por defecto 246 00:09:30,990 --> 00:09:33,909 pero hay más eventos aparte del por defecto 247 00:09:33,909 --> 00:09:35,490 pues hacer 248 00:09:35,490 --> 00:09:37,690 clic en el ratón dentro, que el ratón 249 00:09:37,690 --> 00:09:39,490 entre, que salga, mover 250 00:09:39,490 --> 00:09:41,149 la ruedita cuando estás tú ahí dentro 251 00:09:41,149 --> 00:09:43,370 puedes añadir 252 00:09:43,370 --> 00:09:45,409 muchos al mismo componente, nosotros queremos el 253 00:09:45,409 --> 00:09:47,690 por defecto que es hacer clic, pues le decimos 254 00:09:47,690 --> 00:09:49,149 quiero este, el Action Performer 255 00:09:49,149 --> 00:09:51,690 y él se te va el código 256 00:09:51,690 --> 00:09:53,629 para que tú pongas 257 00:09:53,629 --> 00:09:55,009 el código de una relación performa 258 00:09:55,009 --> 00:09:57,690 y ya está, te ha creado la clase 259 00:09:57,690 --> 00:09:58,809 sola, diréis 260 00:09:58,809 --> 00:10:01,009 que fue amarrada de crearme la clase 261 00:10:01,009 --> 00:10:03,950 claro, porque esta ya es 262 00:10:03,950 --> 00:10:05,750 rizar 263 00:10:05,750 --> 00:10:06,669 el rizo que nos faltaba 264 00:10:06,669 --> 00:10:09,090 esto es una clase anónima 265 00:10:09,090 --> 00:10:13,570 a ver, nosotros 266 00:10:13,570 --> 00:10:15,590 ¿qué le pasábamos a la de Action Listener 267 00:10:15,590 --> 00:10:16,169 del TextFeed? 268 00:10:16,169 --> 00:10:17,570 a la 269 00:10:17,570 --> 00:10:20,690 sí, sí, sí 270 00:10:20,690 --> 00:10:23,090 a lo que íbamos 271 00:10:23,090 --> 00:10:23,850 nosotros 272 00:10:23,850 --> 00:10:27,210 a las clases anónimas 273 00:10:27,210 --> 00:10:28,889 a las clases anónimas 274 00:10:28,889 --> 00:10:30,289 a ver, nosotros 275 00:10:30,289 --> 00:10:33,009 ¿qué le añadíamos a la de ActionListener 276 00:10:33,009 --> 00:10:33,629 de un componente? 277 00:10:34,070 --> 00:10:36,470 un objeto de una clase 278 00:10:36,470 --> 00:10:38,350 de ActionListener, entonces para eso 279 00:10:38,350 --> 00:10:40,690 nos hacíamos una clase que implementaba 280 00:10:40,690 --> 00:10:41,590 ActionListener 281 00:10:41,590 --> 00:10:43,649 con el ActionPerformer dentro 282 00:10:43,649 --> 00:10:45,750 es decir, nos hacíamos esto 283 00:10:45,750 --> 00:10:47,950 Podemos hacerla rápido 284 00:10:47,950 --> 00:10:51,539 Mi listener 285 00:10:51,539 --> 00:10:52,700 Que implement 286 00:10:52,700 --> 00:10:55,580 Action 287 00:10:55,580 --> 00:10:56,820 Listener 288 00:10:56,820 --> 00:11:02,570 Ay, que estrés 289 00:11:02,570 --> 00:11:03,649 Yo quiero darle a 290 00:11:03,649 --> 00:11:05,429 A ver, ¿dónde estás? Ahí 291 00:11:05,429 --> 00:11:08,029 Y ahora 292 00:11:08,029 --> 00:11:09,750 Dentro del action listener 293 00:11:09,750 --> 00:11:10,970 Poníamos 294 00:11:10,970 --> 00:11:17,980 Poníamos el método 295 00:11:17,980 --> 00:11:22,549 Y aquí ya hacíamos lo que 296 00:11:22,549 --> 00:11:23,730 Vale 297 00:11:23,730 --> 00:11:26,419 ¿Verdad? 298 00:11:26,419 --> 00:11:35,779 ¿Por qué está mi portátil tan tonto? 299 00:11:43,480 --> 00:11:45,100 Ah, porque me lo ha cambiado 300 00:11:45,100 --> 00:11:46,159 Interface, claro 301 00:11:46,159 --> 00:11:49,340 ¿Por qué no puedo escribir? 302 00:11:49,419 --> 00:11:50,840 Ah, porque estoy en la clase 303 00:11:50,840 --> 00:11:51,580 Ay, de verdad 304 00:11:51,580 --> 00:11:55,340 Vale, pues entonces 305 00:11:55,340 --> 00:11:56,740 Hacíamos una clase aparte 306 00:11:56,740 --> 00:11:58,419 ¿Interna o aparte? Vale. 307 00:11:58,840 --> 00:12:00,860 Y ahora ya instanciábamos aquí 308 00:12:00,860 --> 00:12:02,980 instanciábamos aquí 309 00:12:02,980 --> 00:12:03,860 un nuevo objeto 310 00:12:03,860 --> 00:12:06,259 ¿verdad? Un new 311 00:12:06,259 --> 00:12:12,490 ¿verdad? 312 00:12:12,570 --> 00:12:14,129 Que esta era nuestra manera de trabajar 313 00:12:14,129 --> 00:12:17,009 era esta, ¿no? 314 00:12:18,710 --> 00:12:19,389 Vale. 315 00:12:19,610 --> 00:12:21,509 Inicialmente nuestra clase estaba fuera. 316 00:12:22,330 --> 00:12:23,649 Dimos el salto por comodidad 317 00:12:23,649 --> 00:12:25,070 para no tener multiplicidad de clases 318 00:12:25,070 --> 00:12:27,470 de hacerla interna. Ahora ya solamente 319 00:12:27,470 --> 00:12:29,450 teníamos un fichero, dos clases dentro. 320 00:12:29,450 --> 00:12:42,009 Vale, dimos el siguiente salto 321 00:12:42,009 --> 00:12:43,570 Para evitar multiplicidad de ficheros 322 00:12:43,570 --> 00:12:44,590 Un solo fichero con las dos clases 323 00:12:44,590 --> 00:12:47,690 Pues el siguiente salto es 324 00:12:47,690 --> 00:12:49,350 Como esta clase 325 00:12:49,350 --> 00:12:50,750 Solo se usa 326 00:12:50,750 --> 00:12:53,210 Para instanciar un único objeto 327 00:12:53,210 --> 00:12:54,450 Que va a ir aquí dentro 328 00:12:54,450 --> 00:12:57,269 Pues no me hace 329 00:12:57,269 --> 00:12:58,889 ¿Para qué crear una clase ahí 330 00:12:58,889 --> 00:13:00,330 Que esté ahí muerta de risa 331 00:13:00,330 --> 00:13:03,649 No, se puede hacer una cosa que es clase anónima 332 00:13:03,649 --> 00:13:05,350 Una clase anónima es una clase 333 00:13:05,350 --> 00:13:07,570 Que se declara 334 00:13:07,570 --> 00:13:09,870 En el momento de crear un objeto 335 00:13:09,870 --> 00:13:11,409 Vale 336 00:13:11,409 --> 00:13:15,759 Que es una clase anónima 337 00:13:15,759 --> 00:13:18,000 Justo 338 00:13:18,000 --> 00:13:19,039 Que buena memoria 339 00:13:19,039 --> 00:13:24,259 Clase 340 00:13:24,259 --> 00:13:27,500 Que se declara 341 00:13:32,539 --> 00:13:34,799 en el momento de instanciar 342 00:13:34,799 --> 00:13:36,559 un objeto de la misma. 343 00:13:38,720 --> 00:13:39,759 Y esa clase, 344 00:13:40,340 --> 00:13:41,460 lo que es la declaración, 345 00:13:41,580 --> 00:13:42,139 desaparece. 346 00:13:42,259 --> 00:13:43,220 Se ha instanciado el objeto 347 00:13:43,220 --> 00:13:43,919 de esa clase 348 00:13:43,919 --> 00:13:45,279 y de esa clase 349 00:13:45,279 --> 00:13:46,360 no se pueden instanciar 350 00:13:46,360 --> 00:13:46,879 más objetos. 351 00:13:47,659 --> 00:13:48,320 Si quieres instanciar 352 00:13:48,320 --> 00:13:48,740 otro objeto, 353 00:13:48,820 --> 00:13:49,740 tendrías que volver a declararlo 354 00:13:49,740 --> 00:13:50,580 en el momento de instanciarlo. 355 00:13:50,700 --> 00:13:51,620 Eso es una clase anónima. 356 00:13:52,059 --> 00:13:52,240 Vale. 357 00:13:53,240 --> 00:13:53,659 Pues mira, 358 00:13:53,720 --> 00:13:55,220 es justo lo que nos vendría bien aquí. 359 00:13:56,299 --> 00:13:57,399 Sí, justo. 360 00:13:57,779 --> 00:13:58,179 Entonces, 361 00:13:58,559 --> 00:13:59,860 yo solamente necesito 362 00:13:59,860 --> 00:14:01,179 un objeto de este liceo. 363 00:14:01,179 --> 00:14:01,980 Me solicito un objeto. 364 00:14:02,539 --> 00:14:04,259 Pues, ¿para qué voy a declarar la clase ahí? 365 00:14:04,840 --> 00:14:05,620 Aunque sea interna. 366 00:14:05,879 --> 00:14:08,340 Para tener esto aquí molestando fuera todo el rato. 367 00:14:09,759 --> 00:14:10,759 No la vas a poder usar más veces. 368 00:14:11,159 --> 00:14:11,279 ¿Vale? 369 00:14:11,320 --> 00:14:13,000 ¿Para qué la voy a tener aquí fuera molestando? 370 00:14:17,320 --> 00:14:18,659 Bueno, si le... 371 00:14:18,659 --> 00:14:21,000 A ver, podías, pero normalmente no es lo habitual. 372 00:14:21,159 --> 00:14:21,659 Pero tú puedes... 373 00:14:24,799 --> 00:14:26,759 Sí, pero tú puedes esta misma clase 374 00:14:26,759 --> 00:14:28,799 instanciar varios objetos 375 00:14:28,799 --> 00:14:30,639 y asociárselo a componentes distintos. 376 00:14:30,639 --> 00:14:32,940 si quieres que diferentes componentes se escuchen con la misma 377 00:14:32,940 --> 00:14:34,940 bueno, hacen lo mismo 378 00:14:34,940 --> 00:14:36,779 o no, si tú tienes un if, el save dentro 379 00:14:36,779 --> 00:14:38,220 en función de cuál fue el origen, ¿no? 380 00:14:39,779 --> 00:14:40,139 claro 381 00:14:40,139 --> 00:14:42,480 entonces, en ese caso 382 00:14:42,480 --> 00:14:44,759 ¿vale? pero normalmente no suele ser el modelo 383 00:14:44,759 --> 00:14:47,100 de diseño que se usa, hacer una clase 384 00:14:47,100 --> 00:14:48,899 asociada a diferentes componentes 385 00:14:48,899 --> 00:14:50,580 y que dentro de la clase distingas 386 00:14:50,580 --> 00:14:52,480 en función, no suele ser el modelo de diseño que se usa 387 00:14:52,480 --> 00:14:54,139 sino para mi componente 388 00:14:54,139 --> 00:14:56,720 un objeto listener de una clase suya 389 00:14:56,720 --> 00:14:58,799 para él, entonces como esa clase solo vale 390 00:14:58,799 --> 00:15:00,580 para él y solo me interesa a mí 391 00:15:00,580 --> 00:15:02,639 esa clase porque voy a instanciar 392 00:15:02,639 --> 00:15:04,539 el objeto una única vez, no voy a instanciarlo más 393 00:15:04,539 --> 00:15:06,899 ¿para qué la voy a dejar aquí fuera molestando? 394 00:15:08,120 --> 00:15:08,559 creando 395 00:15:08,559 --> 00:15:10,320 tentaciones al resto del mundo 396 00:15:10,320 --> 00:15:12,620 que instancie eso, que no lo quiero que nadie más 397 00:15:12,620 --> 00:15:14,419 lo instancie, ¿para qué? lo mejor 398 00:15:14,419 --> 00:15:15,559 para evitar una tentación 399 00:15:15,559 --> 00:15:18,620 es que esta 400 00:15:18,620 --> 00:15:20,580 clase directamente no exista 401 00:15:20,580 --> 00:15:23,019 y evito la tentación de crearla fuera de su lugar 402 00:15:23,019 --> 00:15:24,879 bueno, pues esa clase no existe 403 00:15:24,879 --> 00:15:26,799 entonces puedo optar 404 00:15:26,799 --> 00:15:28,139 por la clase anónima, que es 405 00:15:28,139 --> 00:15:30,519 aquí, que es cuando tengo que instanciar el objeto 406 00:15:30,519 --> 00:15:32,919 aquí voy a la vez a declarar 407 00:15:32,919 --> 00:15:34,679 la clase, es una clase anónima 408 00:15:34,679 --> 00:15:36,960 ¿y cómo se hace? pues como te lo ha hecho 409 00:15:36,960 --> 00:15:38,899 el builder, esa clase 410 00:15:38,899 --> 00:15:41,039 ¿vale? implementará una interfaz 411 00:15:41,039 --> 00:15:42,580 pues tú haces esto 412 00:15:42,580 --> 00:15:50,779 venga, venga, que ya casi estoy 413 00:15:50,779 --> 00:15:50,980 ¿no? 414 00:15:53,679 --> 00:15:54,120 ¿qué? 415 00:15:54,879 --> 00:15:56,600 fallaste, ¿cómo que fallé? 416 00:15:56,620 --> 00:15:57,620 ¿ya no me va a ir más para atrás? 417 00:15:58,259 --> 00:16:00,340 sí, esto, vale 418 00:16:00,340 --> 00:16:02,539 entonces tú dices new 419 00:16:02,539 --> 00:16:04,580 ¿new qué? new un objeto 420 00:16:04,580 --> 00:16:06,960 de una clase que implemente 421 00:16:06,960 --> 00:16:07,639 acción listener. 422 00:16:08,419 --> 00:16:10,179 Esto porque es el constructor. 423 00:16:10,860 --> 00:16:12,600 Hazme un objeto, no es que crees una acción 424 00:16:12,600 --> 00:16:14,480 listener, creas un objeto 425 00:16:14,480 --> 00:16:16,600 de una clase que implemente acción listener 426 00:16:16,600 --> 00:16:18,899 y su implementación interna 427 00:16:18,899 --> 00:16:19,700 pues que sea esto. 428 00:16:22,539 --> 00:16:24,559 Porque, si entendéis. 429 00:16:27,559 --> 00:16:27,879 O sea, 430 00:16:28,620 --> 00:16:30,679 aquí es como si estuviéramos declarando la clase 431 00:16:30,679 --> 00:16:32,580 una clase que implemente 432 00:16:32,580 --> 00:16:34,559 acción listener, que tenga este método 433 00:16:34,559 --> 00:16:36,580 dentro, que le ponemos el código que sea 434 00:16:36,580 --> 00:16:38,860 y en el momento de declararla 435 00:16:38,860 --> 00:16:39,980 la instanciamos 436 00:16:39,980 --> 00:16:47,759 claro, entonces yo 437 00:16:47,759 --> 00:16:49,419 aquí ya pongo el código 438 00:16:49,419 --> 00:16:52,159 al que quiero que se responda 439 00:16:52,159 --> 00:16:53,840 cuando salte el evento 440 00:16:53,840 --> 00:16:54,840 de este componente 441 00:16:54,840 --> 00:16:57,820 claro 442 00:16:57,820 --> 00:16:59,740 porque estoy instanciando el objeto 443 00:16:59,740 --> 00:17:01,519 este paréntesis se abre y se cierra aquí 444 00:17:01,519 --> 00:17:03,899 e instancio porque hay un new 445 00:17:03,899 --> 00:17:05,599 con paréntesis 446 00:17:05,599 --> 00:17:08,200 aquí no pongo el nombre de la clase 447 00:17:08,200 --> 00:17:09,839 porque por eso es anónima, no tiene nombre 448 00:17:09,839 --> 00:17:12,240 aquí pongo el nombre de la interfaz 449 00:17:12,240 --> 00:17:12,859 de la que hereda 450 00:17:12,859 --> 00:17:16,160 y aquí el código 451 00:17:16,160 --> 00:17:18,400 que es obligatorio que implementes 452 00:17:18,400 --> 00:17:20,339 a clase, entonces le estoy dando el código 453 00:17:20,339 --> 00:17:22,640 ahí, le estoy dando el cuerpo ahí, entonces la estoy declarando 454 00:17:22,640 --> 00:17:24,740 a la vez que la instancia 455 00:17:24,740 --> 00:17:25,940 claro, pero es como que estás 456 00:17:25,940 --> 00:17:28,740 sé que es un objeto que implementa 457 00:17:28,740 --> 00:17:30,039 la interfaz, pero tú lo declaras 458 00:17:30,039 --> 00:17:31,579 como que es para la interfaz 459 00:17:31,579 --> 00:17:34,440 sí, pero estás creando 460 00:17:34,440 --> 00:17:36,740 una versión de esta interfaz con este código 461 00:17:36,740 --> 00:17:37,640 es lo que significa 462 00:17:37,640 --> 00:17:40,680 créame una versión de esta interfaz 463 00:17:40,680 --> 00:17:42,700 pero con este código de aquí 464 00:17:42,700 --> 00:17:43,980 eso que viene a ser 465 00:17:43,980 --> 00:17:46,519 créame una implementación concreta de esa interfaz 466 00:17:46,519 --> 00:17:47,220 viene a ser eso 467 00:17:47,220 --> 00:17:49,380 lo que pasa es que en lugar de hacerlo con 468 00:17:49,380 --> 00:17:51,960 créame una clase que la implemente 469 00:17:51,960 --> 00:17:53,539 ahora créame un objeto de esa clase 470 00:17:53,539 --> 00:17:54,779 en lugar de hacerlo así le dices 471 00:17:54,779 --> 00:17:58,640 créame una instancia de algo que implemente 472 00:17:58,640 --> 00:17:59,359 esta interfaz 473 00:17:59,359 --> 00:18:02,039 y esa instancia que tenga este código dentro 474 00:18:02,039 --> 00:18:14,579 Si tú quieres hacer una versión 475 00:18:14,579 --> 00:18:18,500 Bueno, es que 476 00:18:18,500 --> 00:18:20,140 El mismo compilador te lo va a decir 477 00:18:20,140 --> 00:18:22,119 Claro, tú dices 478 00:18:22,119 --> 00:18:24,819 Créame una versión de esta clase 479 00:18:24,819 --> 00:18:26,680 Entonces si esta clase 480 00:18:26,680 --> 00:18:28,579 Es abstracta o anónima 481 00:18:28,579 --> 00:18:30,279 O interfaz, te va a decir 482 00:18:30,279 --> 00:18:35,440 Oye, si tú quieres que yo te instancie un objeto que implemente esto, 483 00:18:36,039 --> 00:18:38,720 pues me vas a tener que dar el código. 484 00:18:40,180 --> 00:18:40,700 ¿Vale? 485 00:18:42,740 --> 00:18:49,619 Entonces, esto es una especie, pues eso, de, tú le puedes decir, 486 00:18:50,339 --> 00:18:54,940 por favor, quiero un objeto de este tipo, un objeto, 487 00:18:55,059 --> 00:18:56,839 acción listener, pero quiero que sea un objeto. 488 00:18:57,039 --> 00:19:00,180 Entonces, tiene que implementar el código de la interfaz. 489 00:19:00,180 --> 00:19:02,039 Quiere un objeto de este tipo 490 00:19:02,039 --> 00:19:03,839 Y ese objeto en particular 491 00:19:03,839 --> 00:19:05,259 Que su implementación 492 00:19:05,259 --> 00:19:08,099 Del método vacío de ActionListener 493 00:19:08,099 --> 00:19:09,420 Que es el obligatorio que tengo que poner 494 00:19:09,420 --> 00:19:10,640 Que su implementación sea esta 495 00:19:10,640 --> 00:19:26,660 Que no lo sabía 496 00:19:26,660 --> 00:19:27,720 Pero a ver 497 00:19:27,720 --> 00:19:31,019 A ver 498 00:19:31,019 --> 00:19:34,220 Que no 499 00:19:34,220 --> 00:19:36,140 A ver, no creo 500 00:19:36,140 --> 00:19:38,640 A ver, los hombres fingen con mucha facilidad 501 00:19:38,640 --> 00:19:40,579 Pero vamos, no lo creo capaz 502 00:19:40,579 --> 00:19:41,559 de fingir tan bien. 503 00:19:46,079 --> 00:19:47,160 Vale, pues a ver. 504 00:19:48,359 --> 00:19:49,440 Para entenderlo. 505 00:19:50,440 --> 00:19:52,119 Esto es que tampoco tiene tanto que entender. 506 00:19:52,819 --> 00:19:54,299 Es volver a decir lo que significa 507 00:19:54,299 --> 00:19:56,279 y luego, ¿qué hace falta 508 00:19:56,279 --> 00:19:57,220 para que uno entienda algo? 509 00:19:57,859 --> 00:20:00,119 Que ya se ponga sus neuronas en funcionamiento 510 00:20:00,119 --> 00:20:01,900 y él solo en su intimidad, 511 00:20:02,079 --> 00:20:03,299 exclusivamente el solito, 512 00:20:04,160 --> 00:20:05,519 cuando ya nadie le esté hablando, 513 00:20:06,220 --> 00:20:07,480 se ponga y lo mire 514 00:20:07,480 --> 00:20:10,519 y lo procese y se lo aprenda. 515 00:20:10,579 --> 00:20:13,259 no se entienden las cosas que no están 516 00:20:13,259 --> 00:20:14,140 memorizadas 517 00:20:14,140 --> 00:20:16,839 en general, ya sé que hay matices 518 00:20:16,839 --> 00:20:17,859 ya sé que hay matices 519 00:20:17,859 --> 00:20:20,839 pero tú para procesar datos 520 00:20:20,839 --> 00:20:22,299 tienes que tenerlos, eso está claro 521 00:20:22,299 --> 00:20:25,200 pues eso es a lo que me refiero 522 00:20:25,200 --> 00:20:26,759 para tú procesar una información 523 00:20:26,759 --> 00:20:27,660 tienes que tener la información 524 00:20:27,660 --> 00:20:30,700 la información tiene que estar en la cabeza, no tiene que estar ahí 525 00:20:30,700 --> 00:20:31,819 entonces 526 00:20:31,819 --> 00:20:34,720 vale, pues aquí 527 00:20:34,720 --> 00:20:37,319 repetimos ya por última vez 528 00:20:37,319 --> 00:20:38,819 aquí está claro 529 00:20:38,819 --> 00:20:41,119 que al addActionListener, si lo habéis memorizado 530 00:20:41,119 --> 00:20:42,359 del otro día, porque no lo habéis 531 00:20:42,359 --> 00:20:44,720 memorizado, es donde falla 532 00:20:44,720 --> 00:20:46,740 en que lo del 533 00:20:46,740 --> 00:20:48,279 día anterior no esté memorizado 534 00:20:48,279 --> 00:20:50,339 a la vez que entendido, pero ya he memorizado. 535 00:20:50,960 --> 00:20:52,599 Pues ya he memorizado, recordaréis que 536 00:20:52,599 --> 00:20:54,700 al addActionListener hay que pasarle un 537 00:20:54,700 --> 00:20:56,319 objeto, sí o sí, un objeto. 538 00:20:57,240 --> 00:20:58,579 Que es un objeto 539 00:20:58,579 --> 00:21:00,599 de tipo actionListener, 540 00:21:00,599 --> 00:21:01,980 pero de un actionListener particular. 541 00:21:02,380 --> 00:21:05,079 Del actionListener que implemente 542 00:21:05,079 --> 00:21:06,460 a través de este 543 00:21:06,460 --> 00:21:08,460 método el código que tú quieres que ocurra. 544 00:21:08,819 --> 00:21:11,180 eso está claro, vale 545 00:21:11,180 --> 00:21:13,299 pues en lugar de hacer la clase 546 00:21:13,299 --> 00:21:15,279 aparte e instanciar el 547 00:21:15,279 --> 00:21:17,220 objeto, podemos hacerlo como 548 00:21:17,220 --> 00:21:19,380 clase anónima, que es, no voy a hacer la clase 549 00:21:19,380 --> 00:21:20,660 aparte, porque solo voy a usar una vez 550 00:21:20,660 --> 00:21:22,579 entonces de esta manera 551 00:21:22,579 --> 00:21:25,180 lo podemos hacer, new y 552 00:21:25,180 --> 00:21:27,559 paréntesis, porque es una instancia 553 00:21:27,559 --> 00:21:29,319 luego una instancia siempre es con 554 00:21:29,319 --> 00:21:31,180 new y paréntesis, vale 555 00:21:31,180 --> 00:21:33,279 ¿qué le decimos aquí? en lugar del 556 00:21:33,279 --> 00:21:35,099 nombre de la clase que yo voy a instanciar 557 00:21:35,099 --> 00:21:36,839 le decimos de que 558 00:21:36,839 --> 00:21:39,059 qué interfaz implementa 559 00:21:39,059 --> 00:21:40,400 sería como decirle 560 00:21:40,400 --> 00:21:43,079 este objeto es de este tipo 561 00:21:43,079 --> 00:21:45,039 es un listener, pero es un ejemplo 562 00:21:45,039 --> 00:21:46,019 concreto de listener 563 00:21:46,019 --> 00:21:47,799 sí 564 00:21:47,799 --> 00:21:49,420 sí 565 00:21:49,420 --> 00:21:55,079 es de este tipo, este objeto va a ser de este tipo 566 00:21:55,079 --> 00:21:56,680 entonces como este tipo tiene 567 00:21:56,680 --> 00:21:57,660 métodos vacíos 568 00:21:57,660 --> 00:22:00,960 pues tienes que decir, vale, muy bien, yo te instancio 569 00:22:00,960 --> 00:22:03,039 un objeto de este tipo, action listener 570 00:22:03,039 --> 00:22:04,220 pero tienes que decirme 571 00:22:04,220 --> 00:22:06,440 que quieres que haga en los métodos vacíos 572 00:22:06,440 --> 00:22:08,039 si no me dices que hace en los métodos vacíos 573 00:22:08,039 --> 00:22:09,660 no te lo puedo implementar 574 00:22:09,660 --> 00:22:10,359 ¿vale? 575 00:22:11,700 --> 00:22:14,539 entonces ¿cómo se lo dices? pues poniendo entre llaves 576 00:22:14,539 --> 00:22:16,660 todo el código 577 00:22:16,660 --> 00:22:17,759 de la clase 578 00:22:17,759 --> 00:22:20,400 que serían los métodos vacíos, que aquí solo hay uno 579 00:22:20,400 --> 00:22:24,400 bueno, pues aquí 580 00:22:24,400 --> 00:22:25,480 ¿qué queremos que haga? 581 00:22:26,339 --> 00:22:28,380 pues eso es lo que, así nos lo hace el builder 582 00:22:28,380 --> 00:22:30,319 ¿vale? esto es lo que nos ha hecho 583 00:22:30,319 --> 00:22:31,220 cuando le hemos dicho 584 00:22:31,220 --> 00:22:33,980 añade un manejador de eventos 585 00:22:33,980 --> 00:22:36,220 aquí ya me lo tiene puesto, ya me lo ha añadido, el 56 586 00:22:36,220 --> 00:22:39,240 a Diven Handler cuando le hemos dicho 587 00:22:39,240 --> 00:22:40,660 que añade un manejador de eventos 588 00:22:40,660 --> 00:22:42,460 pues él me ha creado eso 589 00:22:42,460 --> 00:22:46,559 y ya está, y ahora nosotros lo único que tenemos que hacer 590 00:22:46,559 --> 00:22:48,359 es meter aquí eso y así, eso ya el builder 591 00:22:48,359 --> 00:22:50,720 obviamente no va a adivinar por nosotros 592 00:22:50,720 --> 00:22:52,640 qué queremos que pase cuando 593 00:22:52,640 --> 00:22:53,920 se dé enter al botón 594 00:22:53,920 --> 00:22:55,480 eso no lo puede adivinar 595 00:22:55,480 --> 00:22:58,640 ahora ya nosotros algo tendremos que hacer 596 00:22:58,640 --> 00:23:00,660 que es, qué queremos que pase en este ejercicio 597 00:23:00,660 --> 00:23:02,720 vete al contenido 598 00:23:02,720 --> 00:23:04,640 del text field, el que tenga 599 00:23:04,640 --> 00:23:05,319 en ese momento 600 00:23:05,319 --> 00:23:08,380 saca la cadena que tenga dentro 601 00:23:08,380 --> 00:23:10,140 cuenta los caracteres 602 00:23:10,140 --> 00:23:12,279 y ponme ese numerito 603 00:23:12,279 --> 00:23:14,400 en la etiqueta pensada al efecto 604 00:23:14,400 --> 00:23:16,720 vale, vamos parte por parte 605 00:23:16,720 --> 00:23:19,960 sacamos 606 00:23:19,960 --> 00:23:24,869 el contenido 607 00:23:24,869 --> 00:23:27,849 del text field 608 00:23:27,849 --> 00:23:30,390 el text field 609 00:23:30,390 --> 00:23:31,250 ¿cómo se llama? nombre 610 00:23:31,250 --> 00:23:34,269 pues ¿cómo saco yo el contenido de un text field? 611 00:23:34,410 --> 00:23:36,589 pues voy a averiguar cómo funciona el text field 612 00:23:36,589 --> 00:23:38,490 averiguo y digo, anda, tiene un método que se llama 613 00:23:38,490 --> 00:23:40,069 que es casi seguro 614 00:23:40,069 --> 00:23:42,650 que ese método es para sacar el 615 00:23:42,650 --> 00:23:44,089 string que tenga escrito dentro. 616 00:23:49,039 --> 00:23:49,559 String 617 00:23:49,559 --> 00:23:54,220 ala. Bueno, con 618 00:23:54,220 --> 00:23:56,059 esta línea ya he sacado el contenido 619 00:23:56,059 --> 00:23:57,900 que tiene ese text field. 620 00:23:58,880 --> 00:24:00,359 Ahora, ¿qué necesitamos? 621 00:24:02,259 --> 00:24:04,119 Contar los caracteres que tiene. Bueno, 622 00:24:04,240 --> 00:24:05,519 contar los caracteres que tiene 623 00:24:05,519 --> 00:24:08,039 como es un string, es tan fácil como 624 00:24:08,039 --> 00:24:10,240 llamar a Lenz. Pues 625 00:24:10,240 --> 00:24:10,680 venga. 626 00:24:12,160 --> 00:24:40,759 ala, estos son los caracteres que tiene, número de caracteres, ahora, ¿qué tengo que hacer con este número de caracteres?, ponerlo en la etiqueta que estaba habilitada para el resultado, la etiqueta que estaba habilitada para el resultado, era resultado, se llamaba resultado, esa de ahí arriba, pues venga, en la etiqueta, resultado, punto, sectest, cont, 627 00:24:40,759 --> 00:24:45,240 pero claro, setTest necesita que le pases 628 00:24:45,240 --> 00:24:47,339 una cadena, un string para poner el texto 629 00:24:47,339 --> 00:24:48,759 en la etiqueta 630 00:24:48,759 --> 00:24:50,220 cont es un entero 631 00:24:50,220 --> 00:24:53,299 pero bueno, convertir un entero a la cadena que representa 632 00:24:53,299 --> 00:24:55,099 pues ya sabemos 633 00:24:55,099 --> 00:24:56,940 que esta es la forma más cómoda y fácil de hacerlo 634 00:24:56,940 --> 00:24:58,920 y ya está 635 00:24:58,920 --> 00:25:00,200 esta acción performe de hecho 636 00:25:00,200 --> 00:25:15,009 en la etiqueta 637 00:25:15,009 --> 00:25:17,829 y ya está 638 00:25:17,829 --> 00:25:20,230 y ahora ya 639 00:25:20,230 --> 00:25:21,490 pues ejecutamos esto 640 00:25:21,490 --> 00:25:24,730 cuando pongamos aquí el nombrecito que sea 641 00:25:24,730 --> 00:25:26,430 Enter, 14 642 00:25:26,430 --> 00:25:30,490 Ahí está 643 00:25:30,490 --> 00:25:32,829 Es que hay mucho colorino 644 00:25:32,829 --> 00:25:34,549 A ver, vamos, no pasa nada 645 00:25:34,549 --> 00:25:35,569 Vamos a ponerle la etiqueta 646 00:25:35,569 --> 00:25:37,329 ¿Dónde está la etiqueta? 647 00:25:37,390 --> 00:25:39,069 La etiqueta resultado es esta 648 00:25:39,069 --> 00:25:41,450 Vamos a ponerle 649 00:25:41,450 --> 00:25:43,809 La etiqueta resultado 650 00:25:43,809 --> 00:25:52,670 Vamos a volver a ejecutarlo 651 00:25:52,670 --> 00:25:56,319 ¿Ahora lo ves? 652 00:25:59,000 --> 00:26:00,759 Pero no ves, hay un 11 gigante 653 00:26:00,759 --> 00:26:05,859 o sea que no gusta 654 00:26:05,859 --> 00:26:06,200 el rosa 655 00:26:06,200 --> 00:26:10,079 pues venga 656 00:26:10,079 --> 00:26:11,660 vamos a quitarlo 657 00:26:11,660 --> 00:26:19,420 ah no porque azul 658 00:26:19,420 --> 00:26:20,740 es el área de texto 659 00:26:20,740 --> 00:26:23,880 venga con el amarillito 660 00:26:23,880 --> 00:26:25,380 lo vais a ver muy bien 661 00:26:25,380 --> 00:26:34,559 ala este es mi nombrecito 662 00:26:34,559 --> 00:26:35,880 que tiene nueve caracteres 663 00:26:35,880 --> 00:26:42,599 venga 664 00:26:42,599 --> 00:26:46,420 vale 665 00:26:46,420 --> 00:26:48,299 que haríamos 666 00:26:48,299 --> 00:26:50,839 si queremos que el resultado 667 00:26:50,839 --> 00:26:51,740 salga también 668 00:26:51,740 --> 00:26:54,559 cuando el ratón 669 00:26:54,559 --> 00:26:56,960 se nos escapa y entra 670 00:26:56,960 --> 00:26:57,880 en el área de texto. 671 00:26:58,420 --> 00:27:00,180 Pues ese evento no es el evento por defecto, 672 00:27:00,339 --> 00:27:02,619 con lo cual no lo podríamos pillar con el ActionPerformer. 673 00:27:03,480 --> 00:27:04,640 Pues venga, ¿con qué 674 00:27:04,640 --> 00:27:06,700 vamos a pillar ese evento sobre el área 675 00:27:06,700 --> 00:27:08,900 de texto? A DivenHall, vamos a añadirle 676 00:27:08,900 --> 00:27:10,680 otro. Como es de ratón, 677 00:27:10,779 --> 00:27:12,599 pues vámonos a mouse. Pues cuando 678 00:27:12,599 --> 00:27:13,339 el ratón entre. 679 00:27:15,359 --> 00:27:16,859 Pues venga, cuando el ratón 680 00:27:16,859 --> 00:27:18,960 entre, y como veis, ¿qué me ha añadido 681 00:27:18,960 --> 00:27:20,839 en el área de texto? Me ha añadido ahora un mouse 682 00:27:20,839 --> 00:27:21,259 listener. 683 00:27:22,819 --> 00:27:24,480 Me ha añadido un mouse listener 684 00:27:24,480 --> 00:27:26,279 que hereda 685 00:27:26,279 --> 00:27:28,259 me dice instancia un objeto 686 00:27:28,259 --> 00:27:29,799 que herede de mouse adapter 687 00:27:29,799 --> 00:27:32,480 y hazme aquí el código que quieras 688 00:27:32,480 --> 00:27:33,880 cuando el ratón entre 689 00:27:33,880 --> 00:27:35,079 el área de texto 690 00:27:35,079 --> 00:27:36,859 pues el mismo 691 00:27:36,859 --> 00:27:37,980 el mismo 692 00:27:37,980 --> 00:27:42,369 poner la cantidad de caracteres 693 00:27:42,369 --> 00:27:48,990 ahora el área de texto 694 00:27:48,990 --> 00:27:50,349 tiene dos eventos añadidos 695 00:27:50,349 --> 00:27:52,930 entonces si ponemos aquí un 696 00:27:52,930 --> 00:27:53,630 este 697 00:27:53,630 --> 00:27:57,049 pues no hace falta que des al enter 698 00:27:57,049 --> 00:27:59,289 en cuanto pasas 699 00:27:59,289 --> 00:28:09,420 por aquí, pues te va cambiando el número de caracteres. El botón borrar, para borrar 700 00:28:09,420 --> 00:28:19,299 el texto. Ahora mismo no hace nada. Pues vamos a añadirle un evento a este botoncito. Es 701 00:28:19,299 --> 00:28:23,759 el hacer clic. ¿Queremos que el botón se accione cuando hacemos clic? Sí. ¿Ese es 702 00:28:23,759 --> 00:28:25,720 elemento por defecto? Sí. Pues 703 00:28:25,720 --> 00:28:26,839 a la acción perform 704 00:28:26,839 --> 00:28:33,680 acción perform. Vale. 705 00:28:34,940 --> 00:28:35,519 Pues ya está. 706 00:28:35,680 --> 00:28:37,980 Ya añade una acción listener al botón 707 00:28:37,980 --> 00:28:39,859 limpiar. Le añade una acción listener 708 00:28:39,859 --> 00:28:41,799 un objeto de tipo acción listener con 709 00:28:41,799 --> 00:28:43,640 este código. ¿Qué queremos? 710 00:28:43,819 --> 00:28:45,839 Pues queremos que en el área de texto que se llama 711 00:28:45,839 --> 00:28:47,839 nombre ponga el texto 712 00:28:47,839 --> 00:28:49,640 vacío. Porque eso es lo que 713 00:28:49,640 --> 00:28:51,660 significará limpiar. Poner texto 714 00:28:51,660 --> 00:28:52,619 vacío en el área de texto. 715 00:28:53,759 --> 00:28:55,460 Pues ahora ya nos funcionará el botón. 716 00:28:57,650 --> 00:28:57,789 Sí. 717 00:28:59,369 --> 00:28:59,950 Patapín. 718 00:29:02,420 --> 00:29:03,400 Ya le doy a borrar. 719 00:29:04,079 --> 00:29:09,250 Lo ideal sería que pusiera la etiqueta 0 también. 720 00:29:10,710 --> 00:29:11,970 Se añade el código aquí dentro. 721 00:29:12,150 --> 00:29:13,210 Lo que haga falta. 722 00:29:19,410 --> 00:29:23,039 Set test 0. 723 00:29:23,039 --> 00:29:25,180 Y así nos pone a 0 también la etiqueta. 724 00:29:27,599 --> 00:29:28,960 Cuando le damos a borrar. 725 00:29:31,809 --> 00:29:32,690 Tiene 10 borrar. 726 00:29:32,809 --> 00:29:34,289 Pues nada, lo limpia y lo pone a 0. 727 00:29:35,710 --> 00:29:36,170 En fin. 728 00:29:36,369 --> 00:29:42,059 Vale, pues primero. 729 00:29:42,059 --> 00:29:45,039 practicamos o practicáis con unos ejercicios sencillos 730 00:29:45,039 --> 00:29:46,880 a ver si conseguimos que Cristian 731 00:29:46,880 --> 00:29:47,519 se despierte 732 00:29:47,519 --> 00:29:49,880 y cuando Cristian se haya despertado 733 00:29:49,880 --> 00:29:51,240 después de los ejercicios sencillos 734 00:29:51,240 --> 00:29:53,980 hacemos aplicaciones más grandes para poder ya 735 00:29:53,980 --> 00:30:00,200 si, hoy ha sido mal día para ti 736 00:30:00,200 --> 00:30:01,400 cachis 737 00:30:01,400 --> 00:30:01,880 bueno