1 00:00:06,059 --> 00:00:12,039 Vale, pues a ver, antes de que empecéis ya vosotros a hacer algo. 2 00:00:15,119 --> 00:00:43,520 A ver, yo cuando he hablado de eventos, me he referido a cualquier cosa que se puede hacer con una interfaz gráfica, con una ventanita de estas, a cualquier cosa. 3 00:00:44,380 --> 00:00:48,520 Una es pulsar el botón, está claro, una es pulsar el botón. 4 00:00:49,439 --> 00:00:51,579 Pero hay muchas más cosas que se pueden hacer, ¿verdad? 5 00:00:52,219 --> 00:00:53,579 Desde el momento en que yo, por ejemplo, 6 00:00:53,840 --> 00:00:55,140 silencio. 7 00:00:56,479 --> 00:00:58,320 Por ejemplo, cuando yo escribo aquí algo, 8 00:01:00,039 --> 00:01:02,619 darle al Enter en mi área de texto. 9 00:01:10,980 --> 00:01:12,000 Ya se ha entendido. 10 00:01:19,120 --> 00:01:21,260 Vale, pues cuando yo he hablado de eventos, 11 00:01:21,939 --> 00:01:25,400 me he referido a cualquier cosa que se puede hacer con una interfaz gráfica. 12 00:01:26,239 --> 00:01:27,980 Se pueden hacer muchas cosas. 13 00:01:29,040 --> 00:01:31,579 Solamente, solamente, silencio. 14 00:01:31,599 --> 00:01:35,540 solamente hemos capturado a nosotros 15 00:01:35,540 --> 00:01:36,359 darle al botón 16 00:01:36,359 --> 00:01:39,840 pero el simple hecho de hacer pasar el ratón 17 00:01:39,840 --> 00:01:41,599 por encima es otro evento 18 00:01:41,599 --> 00:01:43,620 cuando yo escribo aquí lo que sea 19 00:01:43,620 --> 00:01:45,840 y le doy a enter es otro evento 20 00:01:45,840 --> 00:01:48,060 incluso cuando hago esto es otro evento 21 00:01:48,060 --> 00:01:49,540 cuando desplazo la ventana 22 00:01:49,540 --> 00:01:51,579 esto es otro evento 23 00:01:51,579 --> 00:01:53,560 darle aquí a la X es otro evento 24 00:01:53,560 --> 00:01:54,859 ¿vale? 25 00:01:55,420 --> 00:01:58,299 entonces evento es cualquier cosa que se puede hacer con la interfaz 26 00:01:58,299 --> 00:02:00,060 y yo aquí 27 00:02:00,060 --> 00:02:01,200 cuando 28 00:02:01,200 --> 00:02:06,680 he hecho este action listener de aquí 29 00:02:06,680 --> 00:02:09,479 en ningún momento figura aquí 30 00:02:09,479 --> 00:02:12,879 que el evento que yo estoy capturando 31 00:02:12,879 --> 00:02:15,800 de este botón, porque lo que sí que estamos 32 00:02:15,800 --> 00:02:18,659 diciendo es que al que se asocia ese código 33 00:02:18,659 --> 00:02:22,219 es al botón, eso sí, al botón se asocia 34 00:02:22,219 --> 00:02:24,500 pero yo en ningún momento he dicho aquí 35 00:02:24,500 --> 00:02:27,740 he dado ninguna información sobre que el evento 36 00:02:27,740 --> 00:02:29,800 que estoy capturando es pulsar 37 00:02:29,800 --> 00:02:33,280 y por qué no es el evento de pasar el ratón por encima, 38 00:02:33,400 --> 00:02:34,099 que también lo es. 39 00:02:36,210 --> 00:02:38,949 ¿En qué momento se está enterando la aplicación 40 00:02:38,949 --> 00:02:40,669 de que el evento que tiene que escuchar 41 00:02:40,669 --> 00:02:43,310 ese ActionListener es pulsar y no pasar el ratón? 42 00:02:44,490 --> 00:02:47,789 Bueno, pues, por el hecho de haber seleccionado 43 00:02:47,789 --> 00:02:50,469 esta clase, ActionListener. 44 00:02:52,030 --> 00:02:55,270 ActionListener significa evento por defecto 45 00:02:55,270 --> 00:02:56,430 de cada componente. 46 00:02:56,430 --> 00:03:00,770 O sea, cada componente, botón, text fill, etiqueta, 47 00:03:01,110 --> 00:03:10,909 Cada componente tiene, no todos, pero bueno, muchos de ellos tienen un evento por defecto que se llama, que suele ser lo que normalmente se hace con ese componente. 48 00:03:12,169 --> 00:03:25,210 Por ejemplo, el botón, su evento por defecto es pulsarlo. Es lo que normalmente hacemos con un botón cuando lo vemos, pulsarlo. Ese es el evento por defecto del botón. 49 00:03:25,210 --> 00:03:27,990 el evento por defecto de un text field 50 00:03:27,990 --> 00:03:29,810 es darle al enter 51 00:03:29,810 --> 00:03:32,469 eso no es que lo diga yo 52 00:03:32,469 --> 00:03:34,530 eso está definido así en la librería 53 00:03:34,530 --> 00:03:36,550 swing, cada componente 54 00:03:36,550 --> 00:03:38,069 tiene un evento por defecto 55 00:03:38,069 --> 00:03:40,650 bueno pues action listener 56 00:03:40,650 --> 00:03:44,840 se refiere 57 00:03:44,840 --> 00:03:47,139 al evento por defecto 58 00:03:47,939 --> 00:03:49,000 es decir 59 00:03:49,000 --> 00:03:51,219 las clases que implementan action listener 60 00:03:51,219 --> 00:03:53,219 son clases que escuchan 61 00:03:53,219 --> 00:03:55,460 a los eventos por defecto 62 00:03:55,460 --> 00:03:57,139 del componente al que yo 63 00:03:57,139 --> 00:03:57,740 lo asocie 64 00:03:57,740 --> 00:04:00,659 del componente al que yo lo asocie 65 00:04:00,659 --> 00:04:02,500 luego 66 00:04:02,500 --> 00:04:05,460 si yo estoy implementando ActionListener 67 00:04:05,460 --> 00:04:06,900 y se lo asocio a un botón 68 00:04:06,900 --> 00:04:09,360 estoy diciendo, oye este código 69 00:04:09,360 --> 00:04:10,979 es el código de respuesta 70 00:04:10,979 --> 00:04:13,419 al evento por defecto 71 00:04:13,419 --> 00:04:15,259 del botón, que es 72 00:04:15,259 --> 00:04:16,480 pulsar 73 00:04:16,480 --> 00:04:19,259 ¿vale? pero ¿qué pasaría 74 00:04:19,259 --> 00:04:21,220 si yo estuviera añadiendo este ActionListener 75 00:04:21,220 --> 00:04:23,120 en lugar de al botón, al textfield 76 00:04:23,120 --> 00:04:23,660 por ejemplo 77 00:04:23,660 --> 00:04:27,120 es decir, yo a mi textfield 78 00:04:27,120 --> 00:04:28,319 le añado 79 00:04:28,319 --> 00:04:30,420 un objeto 80 00:04:30,420 --> 00:04:36,189 le añado un action listener 81 00:04:36,189 --> 00:04:40,180 que sea un objeto 82 00:04:40,180 --> 00:04:40,860 de esta clase 83 00:04:40,860 --> 00:04:44,019 ¿qué estoy haciendo ahora? añadiendo solo al text fill 84 00:04:44,019 --> 00:04:47,860 estoy diciendo, oye, al text fill 85 00:04:47,860 --> 00:04:49,779 añádele una captura de evento 86 00:04:49,779 --> 00:04:51,600 que sea su evento 87 00:04:51,600 --> 00:04:52,660 por defecto 88 00:04:52,660 --> 00:04:55,079 ¿cuál es el evento por defecto del text fill? 89 00:04:55,079 --> 00:04:56,160 darle al enter 90 00:04:56,160 --> 00:04:57,620 entonces ahora 91 00:04:57,620 --> 00:04:59,139 tanto 92 00:04:59,139 --> 00:05:02,819 el botón como el text fill 93 00:05:02,819 --> 00:05:04,740 tienen asociado una captura 94 00:05:04,740 --> 00:05:06,740 de evento. ¿Para qué tipo 95 00:05:06,740 --> 00:05:08,980 de evento? Para el evento por defecto. 96 00:05:09,180 --> 00:05:10,540 Es decir, yo le doy al botón 97 00:05:10,540 --> 00:05:11,680 me funciona. 98 00:05:12,819 --> 00:05:14,839 Pero, le doy a este 99 00:05:14,839 --> 00:05:16,800 y le doy, bueno, te doy uno que no 100 00:05:16,800 --> 00:05:18,779 sabéis esto. Le doy 101 00:05:18,779 --> 00:05:20,339 a enter y también me funciona. 102 00:05:21,720 --> 00:05:21,920 ¿Vale? 103 00:05:27,329 --> 00:05:28,790 Es decir, con el añadido que he hecho. 104 00:05:33,439 --> 00:05:34,819 Yo le doy aquí al enter, 105 00:05:35,240 --> 00:05:37,339 me ha capturado el evento. Me ha capturado 106 00:05:37,339 --> 00:05:39,220 el evento por defecto del text field. 107 00:05:39,220 --> 00:05:40,279 Que es darle al enter. 108 00:05:40,279 --> 00:05:44,740 que le doy al botón, pues también 109 00:05:44,740 --> 00:05:47,180 me ha capturado el evento por defecto 110 00:05:47,180 --> 00:05:49,199 del botón, que es darle al enter 111 00:05:49,199 --> 00:05:59,459 ¿vale? 112 00:05:59,939 --> 00:06:01,800 luego, cuando una clase 113 00:06:01,800 --> 00:06:04,180 implementa ActionListener, es una clase 114 00:06:04,180 --> 00:06:06,319 que recoge el código de respuesta 115 00:06:06,319 --> 00:06:07,800 del evento por defecto 116 00:06:07,800 --> 00:06:09,699 de un componente, del que yo quiera 117 00:06:09,699 --> 00:06:12,339 ¿vale? en este caso se lo he añadido 118 00:06:12,339 --> 00:06:14,279 a los dos, luego el mismo 119 00:06:14,279 --> 00:06:16,240 código, el mismo código es el 120 00:06:16,240 --> 00:06:18,279 código de respuesta del evento por 121 00:06:18,279 --> 00:06:19,819 defecto que yo haga con el botón 122 00:06:19,819 --> 00:06:22,339 y del evento por defecto que yo haga con el dato, 123 00:06:22,819 --> 00:06:23,459 el mismo código. 124 00:06:25,379 --> 00:06:27,779 Entonces, hay componentes que tienen evento por defecto, 125 00:06:27,899 --> 00:06:28,579 pues otros no. 126 00:06:29,220 --> 00:06:31,899 Entonces, no tiene sentido añadirle a ActionListener. 127 00:06:33,019 --> 00:06:34,800 Luego hay eventos específicos. 128 00:06:35,199 --> 00:06:36,300 Por ejemplo, el botón. 129 00:06:37,660 --> 00:06:42,550 Efectivamente, el botón, 130 00:06:43,550 --> 00:06:45,610 yo puedo querer que mi aplicación responda 131 00:06:45,610 --> 00:06:47,569 cuando paso el ratón por encima, por ejemplo. 132 00:06:48,569 --> 00:06:50,529 Pero ese no es el evento por defecto del botón. 133 00:06:50,529 --> 00:06:52,550 pero a lo mejor yo querría capturarlo 134 00:06:52,550 --> 00:06:54,910 yo quiero que la aplicación funcione 135 00:06:54,910 --> 00:06:56,149 me diga si es bis y esto no 136 00:06:56,149 --> 00:06:57,889 cuando paso el ratoncito 137 00:06:57,889 --> 00:06:59,649 por encima del botón 138 00:06:59,649 --> 00:07:01,910 quiero capturar ese evento 139 00:07:01,910 --> 00:07:03,709 entonces 140 00:07:03,709 --> 00:07:06,110 cuando yo defino que eso es lo que quiero hacer 141 00:07:06,110 --> 00:07:08,410 digo, a ver, este evento que yo quiero capturar 142 00:07:08,410 --> 00:07:09,610 sobre el botón 143 00:07:09,610 --> 00:07:12,509 ¿es el evento por defecto de un botón? 144 00:07:13,110 --> 00:07:14,569 no, no lo es, porque el evento por defecto 145 00:07:14,569 --> 00:07:15,430 de un botón es pulsar 146 00:07:15,430 --> 00:07:17,990 luego no lo puedo capturar con ActionListener 147 00:07:17,990 --> 00:07:20,089 vale, pues entonces 148 00:07:20,089 --> 00:07:26,149 ¿Con qué tipo de clase capturo el evento de pasar el ratoncito? 149 00:07:26,810 --> 00:07:29,850 Bueno, pues todos los eventos asociados al ratón 150 00:07:29,850 --> 00:07:36,279 son eventos que en lugar de ser de tipo ActionListener son MouseListener. 151 00:07:36,660 --> 00:07:38,459 Entonces vamos a hacernos otra clase interna, 152 00:07:38,660 --> 00:07:42,079 pero que en lugar de ser ActionListener sea MouseListener. 153 00:07:44,569 --> 00:07:47,350 Porque clases internas una clase puede tener todas las que quiera. 154 00:07:47,350 --> 00:07:52,000 Class 155 00:07:52,000 --> 00:07:53,480 Captura 156 00:07:53,480 --> 00:07:55,660 Evento, botón 157 00:07:55,660 --> 00:07:56,699 Con el ratón 158 00:07:56,699 --> 00:08:00,680 Pasar, ratón 159 00:08:00,680 --> 00:08:05,660 Vale, esta clase quiero que capture 160 00:08:05,660 --> 00:08:07,620 Un evento relacionado con el ratón 161 00:08:07,620 --> 00:08:09,360 En concreto pasar por encima 162 00:08:09,360 --> 00:08:11,160 Pues entonces 163 00:08:11,160 --> 00:08:13,800 Esta clase tiene que implementar 164 00:08:13,800 --> 00:08:15,060 Esto otro 165 00:08:15,060 --> 00:08:16,339 MouseListener 166 00:08:16,339 --> 00:08:22,769 Tiene que implementar MouseListener, ActionListener no 167 00:08:22,769 --> 00:08:25,709 Porque repito, sería para el evento por defecto 168 00:08:25,709 --> 00:08:28,230 entonces importo mouseListener 169 00:08:28,230 --> 00:08:30,050 dejaba WTIvent y me dice 170 00:08:30,050 --> 00:08:31,949 vale, muy bien, esta clase 171 00:08:31,949 --> 00:08:33,929 ya es capaz de estar pendiente 172 00:08:33,929 --> 00:08:36,230 de eventos relacionados con el ratón 173 00:08:36,230 --> 00:08:37,950 esta es una clase capaz 174 00:08:37,950 --> 00:08:40,250 de estar a la escucha de eventos relacionados con el ratón 175 00:08:40,250 --> 00:08:41,789 porque implementa mouseListener 176 00:08:41,789 --> 00:08:44,330 vale, al implementar 177 00:08:44,330 --> 00:08:45,909 una interfaz ya sabéis que hay que 178 00:08:45,909 --> 00:08:48,070 dar cuerpo a todos los métodos 179 00:08:48,070 --> 00:08:49,809 vacíos, que en el 180 00:08:49,809 --> 00:08:52,389 mouseListener son tropecientos, en ActionListener 181 00:08:52,389 --> 00:08:53,990 no solo, en mouseListener son muchos 182 00:08:53,990 --> 00:08:57,409 Pero por el nombre ya nos podemos imaginar lo que significan 183 00:08:57,409 --> 00:08:59,330 Este es el elemento 184 00:08:59,330 --> 00:09:01,269 Relacionado con hacer clic con el ratón 185 00:09:01,269 --> 00:09:03,450 Este resulta 186 00:09:03,450 --> 00:09:05,110 Que coincide con el action listener 187 00:09:05,110 --> 00:09:07,289 Pero porque es un ratón, si fue una etiqueta no 188 00:09:07,289 --> 00:09:09,629 En una etiqueta no hay action listener 189 00:09:09,629 --> 00:09:11,330 En una etiqueta el mouse click 190 00:09:11,330 --> 00:09:12,730 Sería hacer clic en la etiqueta 191 00:09:12,730 --> 00:09:16,419 Este pues 192 00:09:16,419 --> 00:09:20,759 Este debe ser cuando 193 00:09:20,759 --> 00:09:23,299 Lo has pulsado, aunque no lo hayas 194 00:09:23,299 --> 00:09:24,980 Soltado, el clic es 195 00:09:24,980 --> 00:09:27,639 hago clic, pulso y suelto 196 00:09:27,639 --> 00:09:29,879 este se va a saltar 197 00:09:29,879 --> 00:09:31,139 en cuanto tú pulses 198 00:09:31,139 --> 00:09:33,299 no tienes ni que soltar 199 00:09:33,299 --> 00:09:34,419 ya se salta el evento 200 00:09:34,419 --> 00:09:37,379 este sin embargo se va 201 00:09:37,379 --> 00:09:39,460 a saltar 202 00:09:39,460 --> 00:09:41,139 cuando el ratón 203 00:09:41,139 --> 00:09:43,820 abandone la zona del botón 204 00:09:43,820 --> 00:09:45,200 entonces estoy probando 205 00:09:45,200 --> 00:09:46,919 este es cuando entra en la zona del ratón 206 00:09:46,919 --> 00:09:49,039 cuando abandone no, cuando se ha soltado 207 00:09:49,039 --> 00:09:50,340 cuando se ha soltado 208 00:09:50,340 --> 00:09:52,600 este es cuando el ratón entre 209 00:09:52,600 --> 00:09:54,840 cuando el ratón entre en la zona del botón 210 00:09:54,840 --> 00:09:57,059 este es cuando el ratón salga 211 00:09:57,059 --> 00:09:59,019 de la zona del botón 212 00:09:59,019 --> 00:10:01,360 entonces como son eventos 213 00:10:01,360 --> 00:10:03,820 relacionados con el ratón 214 00:10:03,820 --> 00:10:05,779 te dice, vale, que tipo de evento 215 00:10:05,779 --> 00:10:07,679 que hagas clic, que presiones 216 00:10:07,679 --> 00:10:09,899 y te quedes ahí, que lo sueltes 217 00:10:09,899 --> 00:10:11,480 porque estaba presionado de antes 218 00:10:11,480 --> 00:10:13,700 obviamente, que entres 219 00:10:13,700 --> 00:10:15,840 en la zona, que salgas de la zona 220 00:10:15,840 --> 00:10:16,779 que es lo que quieres 221 00:10:16,779 --> 00:10:19,639 vamos a capturar el evento 222 00:10:19,639 --> 00:10:21,820 entrar en la zona del ratón 223 00:10:21,820 --> 00:10:23,700 del botón, perdón, entrar, que sería 224 00:10:23,700 --> 00:10:25,720 a este, lo vamos a poner aquí dentro 225 00:10:25,720 --> 00:10:27,580 el mismo código de aquí, el mismo 226 00:10:27,580 --> 00:10:32,320 este mismo código 227 00:10:32,320 --> 00:10:37,580 lo vamos a poner en el 228 00:10:37,580 --> 00:10:45,960 enter, este, ala 229 00:10:45,960 --> 00:10:47,399 pues tenemos ya una clase 230 00:10:47,399 --> 00:10:50,200 asociada a los eventos 231 00:10:50,200 --> 00:10:52,100 de ratón, que es capaz de escuchar eventos 232 00:10:52,100 --> 00:10:52,980 hechos con el ratón 233 00:10:52,980 --> 00:10:56,000 y tiene hecho código de respuesta 234 00:10:56,000 --> 00:10:57,740 tiene hecho 235 00:10:57,740 --> 00:10:59,860 para el, en concreto 236 00:10:59,860 --> 00:11:01,919 cuando el ratón entra en la zona 237 00:11:01,919 --> 00:11:03,379 del componente al que tú lo asocies 238 00:11:03,379 --> 00:11:04,720 en la zona del componente al que tú lo asocies 239 00:11:04,720 --> 00:11:06,840 vale, pues ahora ya 240 00:11:06,840 --> 00:11:09,220 asociamos este objeto 241 00:11:09,220 --> 00:11:11,299 al que queramos, imaginaos 242 00:11:11,299 --> 00:11:12,519 que se lo asociamos a la etiqueta 243 00:11:12,519 --> 00:11:14,700 pues cuando va a saltar el evento es cuando 244 00:11:14,700 --> 00:11:17,220 nuestro ratón entra en la etiqueta, en la que ponía 245 00:11:17,220 --> 00:11:19,340 introduceñovisí, esto vamos a asociarlo ahí, por variar 246 00:11:19,340 --> 00:11:21,220 pues venga 247 00:11:21,220 --> 00:11:22,659 mi etiqueta que se llamaba etiqueta 248 00:11:22,659 --> 00:11:33,519 a este que se llamaba etiqueta 249 00:11:33,519 --> 00:11:35,840 vamos a asociar 250 00:11:35,840 --> 00:11:36,679 no, este no 251 00:11:36,679 --> 00:11:48,789 es que justo 252 00:11:48,789 --> 00:11:49,669 la etiqueta no tiene 253 00:11:49,669 --> 00:11:52,289 ActionListener porque es solo para 254 00:11:52,289 --> 00:11:56,750 Porque no tiene botón 255 00:11:56,750 --> 00:11:58,549 Este, mouseListener 256 00:11:58,549 --> 00:11:59,289 Vale, la etiqueta 257 00:11:59,289 --> 00:12:02,330 La etiqueta no tiene ActionListener 258 00:12:02,330 --> 00:12:04,149 ¿Vale? O sea, la etiqueta 259 00:12:04,149 --> 00:12:05,210 Le vamos a añadir 260 00:12:05,210 --> 00:12:07,509 Un mouseListener 261 00:12:07,509 --> 00:12:09,830 Que es este que acabamos de hacer aquí 262 00:12:09,830 --> 00:12:12,299 Este 263 00:12:12,299 --> 00:12:14,860 New, captura, evento, botón 264 00:12:14,860 --> 00:12:26,629 Y quitamos esto 265 00:12:26,629 --> 00:12:27,970 Y ponemos esto 266 00:12:27,970 --> 00:12:30,870 Vale, y tengo el punto y coma 267 00:12:30,870 --> 00:12:36,610 vale, y me sobra 268 00:12:36,610 --> 00:12:37,529 un paréntesis 269 00:12:37,529 --> 00:12:39,509 ahora sí 270 00:12:39,509 --> 00:12:41,970 vale, pues a ver 271 00:12:41,970 --> 00:12:45,940 a la etiqueta le vamos a añadir ahora 272 00:12:45,940 --> 00:12:47,320 un objeto de esta clase 273 00:12:47,320 --> 00:12:50,299 cuidado que esta clase es de tipo mouseListener 274 00:12:50,299 --> 00:12:51,700 es de tipo mouseListener 275 00:12:51,700 --> 00:12:53,759 no es ActionListener, luego se añade 276 00:12:53,759 --> 00:12:56,320 con AddMouseListener 277 00:12:56,320 --> 00:12:57,639 no con AddActionListener 278 00:12:57,639 --> 00:12:58,559 se añade así 279 00:12:58,559 --> 00:13:01,580 vale, bueno pues ahora tenemos 280 00:13:01,580 --> 00:13:02,860 tres eventos capturados 281 00:13:02,860 --> 00:13:05,379 el evento por defecto para este botón 282 00:13:05,379 --> 00:13:06,360 que es hacer click 283 00:13:06,360 --> 00:13:09,539 el evento por defecto del text fill 284 00:13:09,539 --> 00:13:11,299 que es hacer enter dentro de él 285 00:13:11,299 --> 00:13:12,539 una vez que hemos escrito enter 286 00:13:12,539 --> 00:13:15,539 y al evento de ratón 287 00:13:15,539 --> 00:13:17,000 de entrar 288 00:13:17,000 --> 00:13:18,879 dentro del área de la etiqueta 289 00:13:18,879 --> 00:13:21,639 tenemos tres eventos capturados 290 00:13:21,639 --> 00:13:23,600 por defecto del botón 291 00:13:23,600 --> 00:13:25,740 por defecto del text fill 292 00:13:25,740 --> 00:13:27,539 y entrar con el ratón 293 00:13:27,539 --> 00:13:28,580 en la zona de la etiqueta 294 00:13:28,580 --> 00:13:30,879 los tres hacen lo mismo 295 00:13:30,879 --> 00:13:33,440 Podrían hacer cosas distintas 296 00:13:33,440 --> 00:13:34,879 Hemos hecho que los tres hagan lo mismo 297 00:13:34,879 --> 00:13:36,240 ¿Vale? 298 00:13:36,940 --> 00:13:38,220 Bueno, pues entonces ahora ya 299 00:13:38,220 --> 00:13:41,399 Ejecutamos esto, entonces si yo pongo aquí 300 00:13:41,399 --> 00:13:42,700 2024 301 00:13:42,700 --> 00:13:45,559 ¿Vale? Pues en cuanto he 302 00:13:45,559 --> 00:13:47,320 Acercado el ratón a la etiqueta 303 00:13:47,320 --> 00:13:48,799 Pues me lo ha hecho 304 00:13:48,799 --> 00:13:51,240 ¿Vale? Entonces el botón me sobraría 305 00:13:51,240 --> 00:13:52,279 Le pongo ahora 2025 306 00:13:52,279 --> 00:13:55,580 Entro, pum, no es bisiesto 307 00:13:55,580 --> 00:13:59,970 ¿Vale? 308 00:14:01,309 --> 00:14:02,850 Entonces lo que quiero decir con esto 309 00:14:02,850 --> 00:14:05,070 que cualquier cosa se puede capturar. 310 00:14:05,590 --> 00:14:06,230 Cualquier cosa. 311 00:14:06,850 --> 00:14:08,870 Y los eventos en general se distinguen en 312 00:14:08,870 --> 00:14:10,590 eventos por defecto. 313 00:14:10,850 --> 00:14:12,889 ¿Qué es lo que tú haces por defecto con un componente? 314 00:14:13,450 --> 00:14:14,870 Algunos lo tienen, otros no. 315 00:14:14,990 --> 00:14:16,409 La etiqueta no tiene por defecto. 316 00:14:16,710 --> 00:14:18,029 El botón sí, que es hacer clic. 317 00:14:18,210 --> 00:14:19,950 El text field sí, que es hacer un enter. 318 00:14:20,230 --> 00:14:21,049 Pero muchos no tienen. 319 00:14:21,909 --> 00:14:24,389 Si un componente tiene evento por defecto 320 00:14:24,389 --> 00:14:25,710 y ese es el que queremos capturar, 321 00:14:26,070 --> 00:14:27,029 clase ActionListener. 322 00:14:27,690 --> 00:14:30,250 No hay ninguna duda y añadimos una de ActionListener. 323 00:14:30,669 --> 00:14:32,090 ¿Vale? ¿Qué más eventos hay? 324 00:14:32,090 --> 00:14:58,889 Hay eventos de ratón, mouse listener. Uno se crea un mouse listener, codifica el método que sea y lo añade con add mouse listener. Hay eventos de teclado, key listener. Pues uno se hace un key listener, implementa el método que sea y lo añade con add key listener. Eventos de que una ventana, cuando uno tiene varios, gane el foco o no gane el foco, focus listener. Pues se implementa un focus listener, codifica los métodos y le añade un focus listener. 325 00:14:58,889 --> 00:15:00,710 esa es la 326 00:15:00,710 --> 00:15:02,450 la idea 327 00:15:02,450 --> 00:15:03,169 vale 328 00:15:03,169 --> 00:15:06,509 bueno pues eso 329 00:15:06,509 --> 00:15:08,950 por otra cosa 330 00:15:08,950 --> 00:15:14,610 vale pues entonces 331 00:15:14,610 --> 00:15:17,929 vais a hacer unos primeros ejercicios 332 00:15:17,929 --> 00:15:18,549 chorras 333 00:15:18,549 --> 00:15:18,929 a ver 334 00:15:18,929 --> 00:15:21,049 como solo hemos visto 335 00:15:21,049 --> 00:15:21,929 el gestor de ubicación 336 00:15:21,929 --> 00:15:22,450 flow layout 337 00:15:22,450 --> 00:15:24,490 os van a quedar las interfaces feas 338 00:15:24,490 --> 00:15:26,350 porque es todo lo joven 339 00:15:26,350 --> 00:15:27,330 es uno detrás de otro 340 00:15:27,330 --> 00:15:28,470 las interfaces feas 341 00:15:28,470 --> 00:15:31,070 podéis investigar 342 00:15:31,070 --> 00:15:31,830 de forma sencilla 343 00:15:31,830 --> 00:15:32,870 otros tipos de gestores 344 00:15:32,870 --> 00:15:33,610 de ubicación 345 00:15:33,610 --> 00:15:42,409 Por ejemplo, vamos a hacer un ejemplito rápido con el grid layout. 346 00:15:43,850 --> 00:15:50,549 A ver, el grid layout, tú fijas una rejilla de coordenadas, grid layout, 347 00:15:51,289 --> 00:15:55,110 fijas una serie de filas y columnas y luego le dices en qué fila y en qué columna. 348 00:15:55,230 --> 00:15:56,509 Entonces, bueno, algo más puede jugar. 349 00:15:57,730 --> 00:16:02,610 Entonces, vamos a hacer un vista 3 para poner otro gestor de ubicación. 350 00:16:03,610 --> 00:16:05,610 pero vamos que rápidamente 351 00:16:05,610 --> 00:16:08,330 haciendo una consulta en internet 352 00:16:08,330 --> 00:16:10,509 o lo que sea, podéis recolocar 353 00:16:10,509 --> 00:16:12,450 vuestros componentes de otra forma con gestores 354 00:16:12,450 --> 00:16:14,590 de ubicación, no vamos 355 00:16:14,590 --> 00:16:15,730 a perder nosotros el tiempo en eso 356 00:16:15,730 --> 00:16:18,330 porque no lo tenemos 357 00:16:18,330 --> 00:16:20,509 a ver, voy a hacer un vista 3 358 00:16:20,509 --> 00:16:32,480 vista 3 359 00:16:32,480 --> 00:16:34,519 y voy a copiar el mismo ventana 360 00:16:34,519 --> 00:16:36,440 visiesto pero le voy a cambiar el flow layout 361 00:16:36,440 --> 00:16:44,539 vale 362 00:16:44,539 --> 00:16:50,590 esta es mi copia, le voy a cambiar el flow layout 363 00:16:50,590 --> 00:16:52,289 bueno pues 364 00:16:52,289 --> 00:16:53,769 hay otro gestor de ubicación 365 00:16:53,769 --> 00:16:56,110 a ver si me acuerdo 366 00:16:56,110 --> 00:16:57,669 de la forma sencilla de usarlo 367 00:16:57,669 --> 00:17:00,590 que es el grid layout 368 00:17:00,590 --> 00:17:15,220 y 369 00:17:15,220 --> 00:17:17,819 al grid layout le das una serie 370 00:17:17,819 --> 00:17:19,460 de filas y columnas 371 00:17:19,460 --> 00:17:21,579 pues por ejemplo vamos a darle 3 372 00:17:21,579 --> 00:17:22,200 y 3 373 00:17:22,200 --> 00:17:24,000 vale 374 00:17:24,000 --> 00:17:28,920 vale 375 00:17:28,920 --> 00:17:30,019 entonces esto es como 376 00:17:30,019 --> 00:17:32,559 dividir tu interfaz 377 00:17:32,559 --> 00:17:36,019 en 3 filas y 3 columnas 378 00:17:36,019 --> 00:17:38,240 Y luego ya decides dentro de esas coordenadas 379 00:17:38,240 --> 00:17:39,759 Donde se coloca cada componente 380 00:17:39,759 --> 00:17:42,259 ¿Vale? Pues entonces 381 00:17:42,259 --> 00:17:45,839 Si ahora le ponemos setLay 382 00:17:45,839 --> 00:17:46,920 O gestor de ubicación 383 00:17:46,920 --> 00:17:49,539 Esto ahora para añadir 384 00:17:49,539 --> 00:17:53,319 Creo que se ponía 385 00:17:53,319 --> 00:17:54,680 Un momento que lo 386 00:17:54,680 --> 00:17:59,259 Las coordenadas 387 00:17:59,259 --> 00:18:01,180 Se ponían en el constructor 388 00:18:01,180 --> 00:18:02,039 Pero no me acuerdo donde 389 00:18:02,039 --> 00:18:11,000 Es para, bueno, por si queréis que os quede un poco más bonito 390 00:18:11,000 --> 00:18:11,839 que todos seguidos 391 00:18:11,839 --> 00:18:14,019 por si alguien lo quiere 392 00:18:14,019 --> 00:18:16,720 pero si no da igual, porque luego vamos a usar 393 00:18:16,720 --> 00:18:19,000 un plugin para hacerlo de otra manera 394 00:18:19,000 --> 00:18:29,480 vale, a ver 395 00:18:29,480 --> 00:18:45,400 a ver 396 00:18:45,400 --> 00:18:54,819 ah bueno, si, te los va 397 00:18:54,819 --> 00:18:57,240 si tú no le pones nada, te los va poniendo en 398 00:18:57,240 --> 00:18:59,440 uno tras otro 399 00:18:59,440 --> 00:19:04,690 vale, por ejemplo 400 00:19:04,690 --> 00:19:07,130 en nuestro caso, si hacemos 401 00:19:07,130 --> 00:19:09,250 dos 402 00:19:09,250 --> 00:19:11,230 columnas por tres filas 403 00:19:11,230 --> 00:19:12,450 vamos a ver como nos quedaría 404 00:19:12,450 --> 00:19:16,009 Dos columnas por tres filas 405 00:19:16,009 --> 00:19:17,349 Ahora ejecutamos este 406 00:19:17,349 --> 00:19:22,940 Me voy al main y pongo ahora vista 3 407 00:19:22,940 --> 00:19:25,819 Para que me haga el 3 408 00:19:25,819 --> 00:19:26,940 A ver como lo ha dejado 409 00:19:26,940 --> 00:19:40,690 Vale, bueno 410 00:19:40,690 --> 00:19:45,480 Ahora hay que ajustar los tamaños 411 00:19:45,480 --> 00:19:46,500 Hay que ajustar cositas 412 00:19:46,500 --> 00:19:48,339 Porque si no lo estira 413 00:19:48,339 --> 00:19:49,700 Hay que ponerle un borde 414 00:19:49,700 --> 00:19:52,720 Al grid layer se le puede fijar 415 00:19:52,720 --> 00:19:55,079 La distancia entre columnas 416 00:19:55,079 --> 00:19:56,599 Porque si no fijamos una distancia 417 00:19:56,599 --> 00:19:58,519 Uff, te estira esto 418 00:19:58,519 --> 00:20:00,539 Entonces tira el componente a toda la 419 00:20:00,539 --> 00:20:02,740 Entonces se le puede fijar una distancia 420 00:20:02,740 --> 00:20:04,839 Entre coordenadas 421 00:20:04,839 --> 00:20:06,200 Para que esto lo haga más pequeñito 422 00:20:06,200 --> 00:20:09,160 Bueno, que sepáis que podéis jugar con esos gestores de ubicación 423 00:20:09,160 --> 00:20:11,039 O si no, tiráis con el flow layer para hacer esto 424 00:20:11,039 --> 00:20:12,579 Y ya está, porque esto nos da igual 425 00:20:12,579 --> 00:20:17,259 Luego lo vamos a hacer de otra manera 426 00:20:17,259 --> 00:20:19,700 Vale, pues a ver 427 00:20:19,700 --> 00:20:21,579 Entonces, os iba a decir 428 00:20:21,579 --> 00:20:22,680 Lo de los ejercicios