1 00:00:00,180 --> 00:00:06,559 Recordáis la arquitectura general de una aplicación con interfaz gráfica swing, ¿verdad? 2 00:00:07,719 --> 00:00:11,179 Que era, tenemos que tener un marco, un frame. 3 00:00:12,460 --> 00:00:16,320 Un frame hay que tener, que es el punto de partida, ¿vale? 4 00:00:18,399 --> 00:00:23,519 El frame general lo que hacemos es personalizarlo mediante la herencia, ¿vale? 5 00:00:24,480 --> 00:00:27,780 Lo personalizamos mediante la herencia y ¿cómo lo personalizamos? 6 00:00:27,780 --> 00:00:29,879 pues en el momento en el que se construye 7 00:00:29,879 --> 00:00:31,059 que es en el constructor 8 00:00:31,059 --> 00:00:33,140 en el momento en el que se construye 9 00:00:33,140 --> 00:00:34,799 pues le metemos cosas 10 00:00:34,799 --> 00:00:37,759 vale, pues en el momento en el que se construye 11 00:00:37,759 --> 00:00:39,439 le metemos cosas como por ejemplo 12 00:00:39,439 --> 00:00:40,740 un comportamiento 13 00:00:40,740 --> 00:00:43,840 de que se cierre el proceso cuando le damos 14 00:00:43,840 --> 00:00:46,020 a la X, que eso lo hacíamos con esta línea 15 00:00:46,020 --> 00:00:50,899 le asociamos 16 00:00:50,899 --> 00:00:53,840 unos componentes 17 00:00:53,840 --> 00:00:54,780 que hemos creado 18 00:00:54,780 --> 00:00:56,820 todo esto lo hacemos en el constructor 19 00:00:56,820 --> 00:01:00,240 el construir la interfaz, la construimos en el constructor 20 00:01:00,240 --> 00:01:02,420 que es el momento en el que se instancia el objeto 21 00:01:02,420 --> 00:01:06,439 pues le pegamos unos componentes 22 00:01:06,439 --> 00:01:09,819 los que hemos decidido previamente en toda esa primera parte 23 00:01:09,819 --> 00:01:11,859 enorme de construcción de prototipos 24 00:01:11,859 --> 00:01:16,239 que nos interesan, pero estos componentes 25 00:01:16,239 --> 00:01:18,859 no se pegan nunca al frame, el frame es una especie 26 00:01:18,859 --> 00:01:21,540 de raíz, de marco general 27 00:01:21,540 --> 00:01:25,319 donde ponemos contenedores o paneles 28 00:01:25,319 --> 00:01:27,819 Bueno, hay más tipos de contenedores 29 00:01:27,819 --> 00:01:28,659 No solo los paneles 30 00:01:28,659 --> 00:01:30,280 El panel es el más habitual 31 00:01:30,280 --> 00:01:33,000 Al marco le ponemos contenedores 32 00:01:33,000 --> 00:01:35,019 Siendo el panel el más habitual 33 00:01:35,019 --> 00:01:36,760 Y ya a esos contenedores 34 00:01:36,760 --> 00:01:38,540 Le ponemos los componentes 35 00:01:38,540 --> 00:01:39,920 Bueno, pues 36 00:01:39,920 --> 00:01:42,859 Un frame cualquiera siempre trae 37 00:01:42,859 --> 00:01:45,319 Un panel por defecto 38 00:01:45,319 --> 00:01:46,159 Pegado a él 39 00:01:46,159 --> 00:01:49,079 Cuyo tamaño es el mismo tamaño del frame 40 00:01:49,079 --> 00:01:49,959 Siempre lo trae 41 00:01:49,959 --> 00:01:53,560 Los de atrás, Rodrigo y compañía 42 00:01:53,560 --> 00:01:54,659 Y todos que se callen 43 00:01:54,659 --> 00:02:00,540 Entonces ese panel por defecto lo extraemos con este método 44 00:02:00,540 --> 00:02:03,819 De nuestro frame extraemos ese panel por defecto 45 00:02:03,819 --> 00:02:07,260 Y a ese panel por defecto es el que le ponemos los componentes 46 00:02:07,260 --> 00:02:10,919 En nuestro caso que es nuestra primera interfaz sencilla sin complicarnos la vida 47 00:02:10,919 --> 00:02:16,199 Entonces esos componentes si los ponemos sin más 48 00:02:16,199 --> 00:02:19,039 Ya vimos que se ponen unos encima de otros 49 00:02:19,039 --> 00:02:22,360 Y además con el tamaño agrandado al tamaño del panel 50 00:02:22,360 --> 00:02:23,939 Ese aspecto no nos gusta 51 00:02:23,939 --> 00:02:28,080 pues entonces tenemos que decirle al panel 52 00:02:28,080 --> 00:02:32,580 oye, voy a crear un gestor de ubicación 53 00:02:32,580 --> 00:02:35,099 un gestor de ubicación que te va a ti 54 00:02:35,099 --> 00:02:37,939 a indicar cómo los tienes que colocar 55 00:02:37,939 --> 00:02:40,780 bueno, pues gestores de ubicación hay de muchos tipos 56 00:02:40,780 --> 00:02:42,860 este era el más sencillo 57 00:02:42,860 --> 00:02:45,479 que es un gestor de ubicación en filita 58 00:02:45,479 --> 00:02:48,060 entonces el gestor de ubicación en filita 59 00:02:48,060 --> 00:02:49,379 que es el flow layout 60 00:02:49,379 --> 00:02:52,879 pues le ordena al panel 61 00:02:52,879 --> 00:02:59,479 panel cuando se le asocia, que con el set layout se lo asociábamos, este gestor de ubicación se lo 62 00:02:59,479 --> 00:03:05,099 asociábamos al panel con el set layout, pues desde el momento en el que se le asocia ya le dice todo 63 00:03:05,099 --> 00:03:09,879 lo que llegue a ti en fila, todo lo que llegue a ti en fila, todo. Pues ahora ya texto saluda y despide, 64 00:03:10,039 --> 00:03:16,520 todo en filita. Por eso se llama flow layout. Hay más gestores como el grid layout que es para 65 00:03:16,520 --> 00:03:18,039 colocar en una rejilla, bueno 66 00:03:18,039 --> 00:03:19,379 los actores de ubicación 67 00:03:19,379 --> 00:03:22,780 que le indican al panel 68 00:03:22,780 --> 00:03:24,719 al panel, no al frame 69 00:03:24,719 --> 00:03:26,900 al panel, porque el panel es el que tiene los componentes 70 00:03:26,900 --> 00:03:28,099 cómo se van a colocar 71 00:03:28,099 --> 00:03:30,000 bueno, pues hicimos este pequeño ejemplo 72 00:03:30,000 --> 00:03:30,840 el panel grande 73 00:03:30,840 --> 00:03:34,180 sí, sí, sí, porque estamos usando 74 00:03:34,180 --> 00:03:36,080 solamente el panel grande que viene de serie 75 00:03:36,080 --> 00:03:37,120 para todo ahora mismo 76 00:03:37,120 --> 00:03:39,259 que sería el equivalente al bot 77 00:03:39,259 --> 00:03:42,629 sí, supongo 78 00:03:42,629 --> 00:03:45,689 sí, pero luego en el bot 79 00:03:45,689 --> 00:03:47,729 tú puedes poner diferentes contenedores 80 00:03:47,729 --> 00:03:49,210 pequeñitos, diferentes cosas. 81 00:03:49,830 --> 00:03:51,189 Pues sería el equivalente a ese, sí. 82 00:03:52,349 --> 00:03:52,689 Vale. 83 00:03:53,469 --> 00:03:54,810 Bueno, pues entonces 84 00:03:54,810 --> 00:03:57,629 la interfaz se quedaba 85 00:03:57,629 --> 00:03:59,870 construida, pero teníamos luego 86 00:03:59,870 --> 00:04:01,409 que resolver el problema 87 00:04:01,409 --> 00:04:03,330 ahora ya de la respuesta 88 00:04:03,330 --> 00:04:04,810 a los eventos del usuario. 89 00:04:05,129 --> 00:04:06,229 La respuesta a los eventos. 90 00:04:06,909 --> 00:04:09,310 Entonces la respuesta a los eventos sigue este modelo. 91 00:04:10,729 --> 00:04:11,509 Tiene que existir 92 00:04:11,509 --> 00:04:12,590 un objeto creado 93 00:04:12,590 --> 00:04:15,389 en mi aplicación, tiene que existir un objeto 94 00:04:15,389 --> 00:04:17,230 creado que sea capaz 95 00:04:17,230 --> 00:04:20,110 de darse cuenta de que algo ha pasado a la interfaz. 96 00:04:21,009 --> 00:04:23,629 Eso no es fácil, porque tiene que ser capaz de darse cuenta 97 00:04:23,629 --> 00:04:25,569 de que ha habido un evento en el teclado. 98 00:04:26,209 --> 00:04:27,529 Tiene que ser capaz de darse cuenta. 99 00:04:28,370 --> 00:04:30,629 Bueno, pues los objetos que son capaces de darse cuenta 100 00:04:30,629 --> 00:04:33,410 de que algo ha pasado, asincronamente, de repente, 101 00:04:33,730 --> 00:04:35,029 asincronamente de que algo ha pasado, 102 00:04:35,149 --> 00:04:38,370 son los objetos en general listener, los que se llaman listener. 103 00:04:39,110 --> 00:04:42,829 Y se llaman listener porque son objetos que heredan 104 00:04:42,829 --> 00:04:45,170 de interfaces Listener 105 00:04:45,170 --> 00:04:47,290 o implementa interfaces Listener 106 00:04:47,290 --> 00:04:49,009 que hay muchas interfaces Listener 107 00:04:49,009 --> 00:04:49,670 ya veremos 108 00:04:49,670 --> 00:04:51,810 pero la más general 109 00:04:51,810 --> 00:04:54,389 es la ActionListener 110 00:04:54,389 --> 00:04:56,449 exacto 111 00:04:56,449 --> 00:04:58,110 entonces cada Listener 112 00:04:58,110 --> 00:05:00,910 cada clase Listener está especializada 113 00:05:00,910 --> 00:05:03,029 en un tipo de eventos 114 00:05:03,029 --> 00:05:03,550 ¿vale? 115 00:05:04,490 --> 00:05:07,410 la interfaz ActionListener 116 00:05:07,410 --> 00:05:09,430 está especializada 117 00:05:09,430 --> 00:05:10,990 en los eventos por defecto 118 00:05:10,990 --> 00:05:11,610 que se llaman 119 00:05:11,610 --> 00:05:13,750 que es en lo que habitualmente 120 00:05:13,750 --> 00:05:15,149 se hace en cada componente 121 00:05:15,149 --> 00:05:17,649 en un botón que es lo que habitualmente 122 00:05:17,649 --> 00:05:18,910 se hace, hacerle click 123 00:05:18,910 --> 00:05:21,629 pero en un área de texto en la que tú 124 00:05:21,629 --> 00:05:23,569 metes texto, ¿cuál es el evento 125 00:05:23,569 --> 00:05:25,449 por defecto? darle al enter 126 00:05:25,449 --> 00:05:27,430 tú metes texto, das al enter 127 00:05:27,430 --> 00:05:29,709 pues el ActionListener escucharía el enter 128 00:05:29,709 --> 00:05:31,870 de un área de texto, o sea el ActionListener 129 00:05:31,870 --> 00:05:32,990 no es que sea siempre click 130 00:05:32,990 --> 00:05:35,910 el ActionListener es el capaz de escuchar 131 00:05:35,910 --> 00:05:37,850 el evento más habitual 132 00:05:37,850 --> 00:05:39,509 o el evento por defecto 133 00:05:39,509 --> 00:05:41,550 de cada componente, que cada uno tiene 134 00:05:41,550 --> 00:05:43,110 el suyo. Y hay algunos que no tienen. 135 00:05:43,269 --> 00:05:45,290 No tienen evento por defecto. Con lo cual, la acción 136 00:05:45,290 --> 00:05:47,230 listener nunca sería capaz de escuchar nada 137 00:05:47,230 --> 00:05:49,550 sobre ellos. Hay componentes que no tienen evento por defecto. 138 00:05:50,930 --> 00:05:51,149 Vale. 139 00:05:51,470 --> 00:05:53,430 Bueno, pues, entonces, si yo 140 00:05:53,430 --> 00:05:55,410 quiero crear un objeto que sea 141 00:05:55,410 --> 00:05:56,610 capaz de escuchar 142 00:05:56,610 --> 00:05:59,449 el evento por defecto del componente 143 00:05:59,449 --> 00:06:03,759 que sea, sí, 144 00:06:04,180 --> 00:06:06,420 pero así un poquito más humildemente. 145 00:06:07,379 --> 00:06:07,899 Pasa, pasa. 146 00:06:14,129 --> 00:06:15,129 Y con más celeridad. 147 00:06:22,259 --> 00:06:22,740 Bueno. 148 00:06:22,740 --> 00:06:25,040 tenemos, si queremos 149 00:06:25,040 --> 00:06:26,939 que la interfaz sea capaz 150 00:06:26,939 --> 00:06:29,100 de espabilar cuando activamos 151 00:06:29,100 --> 00:06:30,879 el evento por defecto del componente 152 00:06:30,879 --> 00:06:38,259 Buenas, ¿qué tienes que decirnos? 153 00:06:40,600 --> 00:06:42,019 ¿Puedo pasar, por favor? 154 00:06:42,139 --> 00:06:43,079 Eso desde la puerta 155 00:06:43,079 --> 00:06:49,120 Llamas primero 156 00:06:49,120 --> 00:06:51,199 Es que hay que enseñárselo todo a estos fríos 157 00:06:51,199 --> 00:06:52,720 Sí 158 00:06:52,720 --> 00:06:55,779 ¿qué ha ocurrido? porque llegas tarde 159 00:06:55,779 --> 00:06:57,699 no te he dicho que puedas pasar todavía 160 00:06:57,699 --> 00:07:00,519 ¿qué ha ocurrido? porque llegas tarde 161 00:07:00,519 --> 00:07:03,779 en fin, seguimos 162 00:07:03,779 --> 00:07:08,379 para tener un objeto ahí 163 00:07:08,379 --> 00:07:10,399 que sea capaz de despertarse y espabilar 164 00:07:10,399 --> 00:07:12,540 cuando ocurre el evento 165 00:07:12,540 --> 00:07:14,160 por defecto del componente que sea 166 00:07:14,160 --> 00:07:15,540 lo que tenemos que hacer es 167 00:07:15,540 --> 00:07:18,879 crear una clase que implemente 168 00:07:18,879 --> 00:07:19,839 de ese listener 169 00:07:19,839 --> 00:07:22,339 que es el tipo de listener que es capaz 170 00:07:22,339 --> 00:07:24,060 de escuchar los eventos por defecto, 171 00:07:24,339 --> 00:07:26,279 creamos una clase y luego ya instanciamos un objeto 172 00:07:26,279 --> 00:07:28,420 de esa clase. ¿Por qué no 173 00:07:28,420 --> 00:07:30,600 instanciamos directamente una acción listener? 174 00:07:31,420 --> 00:07:32,360 Por dos cosas. 175 00:07:32,540 --> 00:07:33,660 Una, porque es una interfaz. 176 00:07:34,360 --> 00:07:36,180 No se instancian las interfaces, ya lo sabemos. 177 00:07:36,879 --> 00:07:38,459 Y otra, porque el objeto 178 00:07:38,459 --> 00:07:40,300 que instanciamos, ese que tiene que ser capaz de 179 00:07:40,300 --> 00:07:42,759 escuchar, tiene que estar personalizado 180 00:07:42,759 --> 00:07:44,300 para tener 181 00:07:44,300 --> 00:07:46,259 dentro el código concreto 182 00:07:46,259 --> 00:07:48,060 con el que queremos que responda 183 00:07:48,060 --> 00:07:50,339 cuando ese evento ha ocurrido. Entonces, tiene que ser 184 00:07:50,339 --> 00:07:52,240 un objeto personalizado con el 185 00:07:52,240 --> 00:07:53,980 código concreto que queremos 186 00:07:53,980 --> 00:07:56,199 que ocurra cuando se dé ese evento 187 00:07:56,199 --> 00:07:57,720 vale, pues entonces 188 00:07:57,720 --> 00:08:00,100 hacemos la clase que implemente 189 00:08:00,100 --> 00:08:02,339 ActionListener para darle la capacidad 190 00:08:02,339 --> 00:08:04,000 de escuchar eventos 191 00:08:04,000 --> 00:08:05,699 por defecto de los componentes 192 00:08:05,699 --> 00:08:07,800 y ahora ya 193 00:08:07,800 --> 00:08:09,639 personalizamos este método 194 00:08:09,639 --> 00:08:12,319 que en ActionListener está vacío, lo personalizamos 195 00:08:12,319 --> 00:08:13,540 dándole el código 196 00:08:13,540 --> 00:08:15,500 que queremos que 197 00:08:15,500 --> 00:08:18,139 se ejecute cuando pase 198 00:08:18,139 --> 00:08:19,220 ese evento por defecto 199 00:08:19,220 --> 00:08:22,040 en este caso le pusimos simplemente que muestre 200 00:08:22,040 --> 00:08:23,079 por consola una cosa 201 00:08:23,079 --> 00:08:31,459 vale, bueno pues 202 00:08:31,459 --> 00:08:33,200 entonces, ahora esta clase está hecha 203 00:08:33,200 --> 00:08:35,639 ahora ya podemos instanciar un objeto de esta clase 204 00:08:35,639 --> 00:08:37,840 entonces este objeto se instancia 205 00:08:37,840 --> 00:08:39,159 muy bien, se instancia 206 00:08:39,159 --> 00:08:40,320 y está aquí instanciado 207 00:08:40,320 --> 00:08:45,179 práctica habitual, se crea un objeto 208 00:08:45,179 --> 00:08:46,799 para cada elemento que lo va a llamar 209 00:08:46,799 --> 00:08:49,259 ahora nos vamos a meter en eso 210 00:08:49,259 --> 00:08:51,139 porque vamos a empezar a resolver el problema de 211 00:08:51,139 --> 00:08:53,399 cómo pasar los parámetros, ahora lo vamos a ir 212 00:08:53,399 --> 00:08:55,039 resolviendo, vale 213 00:08:55,039 --> 00:08:56,200 entonces 214 00:08:56,200 --> 00:08:59,799 aunque la respuesta 215 00:08:59,799 --> 00:09:01,379 última y más real sería depende 216 00:09:01,379 --> 00:09:03,500 como siempre, pero en cualquier caso vamos a 217 00:09:03,500 --> 00:09:04,659 volver ahora a eso 218 00:09:04,659 --> 00:09:07,379 es que de verdad, la vida son 219 00:09:07,379 --> 00:09:09,360 muchos dependes, así que 220 00:09:09,360 --> 00:09:11,000 mentalizados, entonces 221 00:09:11,000 --> 00:09:13,580 lo importante 222 00:09:13,580 --> 00:09:15,340 uno no tiene que tener 223 00:09:15,340 --> 00:09:17,220 conocimientos, uno tiene que tener 224 00:09:17,220 --> 00:09:19,879 desarrollar capacidad de tomar decisiones 225 00:09:19,879 --> 00:09:21,559 tiene que tener recursos para tomar 226 00:09:21,559 --> 00:09:23,159 decisiones correctas 227 00:09:23,159 --> 00:09:25,480 de ahí la importancia 228 00:09:25,480 --> 00:09:27,480 de asumir que todo depende, claro 229 00:09:27,480 --> 00:09:29,379 bueno, pues entonces, nosotros ya hemos 230 00:09:29,379 --> 00:09:30,399 instanciado este objeto 231 00:09:30,399 --> 00:09:32,720 este objeto ya es capaz 232 00:09:32,720 --> 00:09:35,440 de escuchar eventos por defecto, porque es una acción 233 00:09:35,440 --> 00:09:37,440 listener, y además tiene un 234 00:09:37,440 --> 00:09:39,240 código dentro con el que podría responder 235 00:09:39,240 --> 00:09:40,679 magnífico 236 00:09:40,679 --> 00:09:43,500 y ahora nos pregunta, si ya, yo soy capaz de escuchar 237 00:09:43,500 --> 00:09:44,500 eventos por defecto, ¿de quién? 238 00:09:45,299 --> 00:09:47,320 de este área de texto, del panel 239 00:09:47,320 --> 00:09:49,480 del scroll bar que me habías 240 00:09:49,480 --> 00:09:51,399 puesto, ¿de quién escucho yo? no puedo escucharlos 241 00:09:51,399 --> 00:09:53,480 a todos, tengo que escuchar a uno 242 00:09:53,480 --> 00:09:55,379 ¿a quién? vale, pues 243 00:09:55,379 --> 00:09:57,840 ahora es cuando, al componente 244 00:09:57,840 --> 00:09:59,500 que diga, no, no, escucha ese 245 00:09:59,500 --> 00:10:00,960 pues se lo añadimos 246 00:10:00,960 --> 00:10:02,840 con el método de AddAttionListener, le decimos 247 00:10:02,840 --> 00:10:04,960 tu objeto escucha saludar 248 00:10:04,960 --> 00:10:06,980 escucha, estate pendiente 249 00:10:06,980 --> 00:10:09,360 estate enganchado a este componente 250 00:10:09,360 --> 00:10:10,740 estate enganchado a este 251 00:10:10,740 --> 00:10:13,460 y cuando salte el evento por defecto 252 00:10:13,460 --> 00:10:15,320 cuando detectes que se ha hecho 253 00:10:15,320 --> 00:10:16,919 el evento por defecto en ese componente 254 00:10:16,919 --> 00:10:18,919 y ahora ya te despiertas y ejecutas tu código 255 00:10:18,919 --> 00:10:19,659 ¿vale? 256 00:10:20,340 --> 00:10:22,759 pero instanciar el objeto simplemente 257 00:10:22,759 --> 00:10:25,100 no hacemos nada, le tenemos ahí instancia de memoria 258 00:10:25,100 --> 00:10:27,980 pero no está enganchado a ningún componente, ¿vale? 259 00:10:28,360 --> 00:10:30,240 Le podemos enganchar a más de uno, 260 00:10:30,320 --> 00:10:31,840 no tiene por qué estar escuchando solo a uno, 261 00:10:31,980 --> 00:10:33,179 como fue el ejemplo del otro día. 262 00:10:33,659 --> 00:10:35,200 Le pusimos a la escucha de dos, 263 00:10:35,700 --> 00:10:37,919 tanto del botón de saludar como el de despedir. 264 00:10:38,299 --> 00:10:41,960 Con lo cual, cualquiera de los dos que recibiera el evento por defecto, 265 00:10:42,399 --> 00:10:45,620 este objeto iba a saltar e iba a despertarse, ¿vale? 266 00:10:45,679 --> 00:10:48,460 Iba a saltar e iba a despertarse, con lo cual iba a llegar aquí. 267 00:10:48,960 --> 00:10:53,879 Despertarse significa, pum, entrar en esta zona, ¿vale? 268 00:10:53,879 --> 00:11:05,980 Entonces, aquí efectivamente, como este objeto podía haber despertado por dos fuentes distintas, pues si queríamos que respondiera de forma distinta a las dos fuentes, teníamos que distinguir dentro de alguna manera. 269 00:11:06,860 --> 00:11:16,700 Entonces, ¿cómo podemos distinguir dentro quién fue el que recibió el evento? ¿Quién es el que te ha despertado de los dos botones? ¿Quién te ha despertado? Pues el que me ha despertado está aquí metido. 270 00:11:16,700 --> 00:11:19,700 porque cuando este objeto se despierta 271 00:11:19,700 --> 00:11:22,240 la máquina virtual le pasa un objetito 272 00:11:22,240 --> 00:11:24,039 a Action Event con toda 273 00:11:24,039 --> 00:11:25,879 la información del componente 274 00:11:25,879 --> 00:11:27,960 que recibió el evento 275 00:11:27,960 --> 00:11:29,559 de la hora en la que se produjo 276 00:11:29,559 --> 00:11:32,139 un montón de cosas relacionadas 277 00:11:32,139 --> 00:11:32,720 con ese evento 278 00:11:32,720 --> 00:11:35,919 de ese montón de cosas que podemos sacar 279 00:11:35,919 --> 00:11:38,039 información relacionada con el evento 280 00:11:38,039 --> 00:11:39,860 una de las que podemos sacar 281 00:11:39,860 --> 00:11:41,580 es que objeto 282 00:11:41,580 --> 00:11:43,820 fue, si es que queremos 283 00:11:43,820 --> 00:11:45,940 sacarlo porque este evento está asociado 284 00:11:45,940 --> 00:11:47,759 a muchos. Si está asociado a muchos, pues vamos a 285 00:11:47,759 --> 00:11:49,919 tratar de sacarlo. Bueno, pues con este 286 00:11:49,919 --> 00:11:51,240 método sacábamos el object. 287 00:11:51,820 --> 00:11:53,659 El objeto object que 288 00:11:53,659 --> 00:11:55,320 nos dio el evento. 289 00:11:55,899 --> 00:11:57,679 En nuestro caso, como sabíamos que 290 00:11:57,679 --> 00:11:59,759 cualquiera de los dos iban a ser botones, 291 00:12:00,779 --> 00:12:01,659 pues hacíamos el casting 292 00:12:01,659 --> 00:12:03,740 directamente. Entonces, 293 00:12:03,980 --> 00:12:05,080 este es el botón 294 00:12:05,080 --> 00:12:06,740 que causó el evento. 295 00:12:07,700 --> 00:12:09,320 Y ya lo usábamos de esta manera. 296 00:12:09,740 --> 00:12:11,500 Si el botón que causó el evento, 297 00:12:11,500 --> 00:12:13,259 el texto que tiene puesto encima 298 00:12:13,259 --> 00:12:14,820 es saludar, pues hace esto. 299 00:12:14,820 --> 00:12:17,379 Si el botón que causó el evento 300 00:12:17,379 --> 00:12:19,720 Que es este, el texto que tiene puesto encima 301 00:12:19,720 --> 00:12:20,700 No es saludar 302 00:12:20,700 --> 00:12:22,019 Pues entonces haces otro 303 00:12:22,019 --> 00:12:24,740 ¿Vale? Y ahí nos quedamos 304 00:12:24,740 --> 00:12:25,620 Dime 305 00:12:25,620 --> 00:12:31,580 El ruidito 306 00:12:31,580 --> 00:12:36,289 No hay más derecho 307 00:12:36,289 --> 00:12:42,539 No lo sé 308 00:12:42,539 --> 00:12:44,720 Igual es porque has llegado tarde 309 00:12:44,720 --> 00:12:46,059 Y no te ha dado tiempo a 310 00:12:46,059 --> 00:12:50,279 Claro, no te ha dado tiempo a corregirlo 311 00:12:50,279 --> 00:12:52,059 en el rato este, por haber llegado tarde 312 00:12:52,059 --> 00:12:53,179 es normal, pasa a menudo 313 00:12:53,179 --> 00:12:56,139 bueno, entonces ya tenemos nuestro 314 00:12:56,139 --> 00:12:58,240 frame personalizado, nuestra aplicación es un main 315 00:12:58,240 --> 00:12:59,799 nuestra aplicación es un main 316 00:12:59,799 --> 00:13:02,299 pues ya está, nuestra aplicación lo único que hace es 317 00:13:02,299 --> 00:13:03,980 instanciar el frame 318 00:13:03,980 --> 00:13:05,860 al instanciar el frame 319 00:13:05,860 --> 00:13:08,019 llama al constructor, lógicamente, el constructor 320 00:13:08,019 --> 00:13:10,100 construye la interfaz, hace todo lo que hemos visto 321 00:13:10,100 --> 00:13:11,519 bla bla bla, todo en el constructor 322 00:13:11,519 --> 00:13:14,299 porque es en el momento en el que se crea 323 00:13:14,299 --> 00:13:16,159 y luego además este frame 324 00:13:16,159 --> 00:13:18,100 que ya está hecho, podemos hacer 325 00:13:18,100 --> 00:13:20,000 cosas con él, como darle un tamaño 326 00:13:20,000 --> 00:13:21,679 hacerle visible, no hacerle visible 327 00:13:21,679 --> 00:13:24,259 y algunas cosas que podríamos hacer en general con el tema 328 00:13:24,259 --> 00:13:26,539 pues estar en la arquitectura 329 00:13:26,539 --> 00:13:28,259 básica, construir 330 00:13:28,259 --> 00:13:29,759 la interfaz mediante 331 00:13:29,759 --> 00:13:31,460 un frame personalizado 332 00:13:31,460 --> 00:13:34,100 y luego crear tantos listeners 333 00:13:34,100 --> 00:13:35,259 como necesitemos 334 00:13:35,259 --> 00:13:38,200 y asociarlos a los componentes 335 00:13:38,200 --> 00:13:40,059 a los que tienen que estar ahí escuchando 336 00:13:40,059 --> 00:13:44,120 y ya está, y luego instancia el frame y se acabó 337 00:13:44,120 --> 00:13:45,019 esto muy en general 338 00:13:45,019 --> 00:13:49,899 estás deseando preguntar pero estás diciendo 339 00:13:49,899 --> 00:13:51,340 bueno voy a esperar un rato 340 00:13:51,340 --> 00:13:52,919 ¿No es eso lo que te está ocurriendo? 341 00:13:53,159 --> 00:13:53,440 A ver 342 00:13:53,440 --> 00:13:55,620 Vale 343 00:13:55,620 --> 00:13:58,440 Bueno, pregunta 344 00:13:58,440 --> 00:14:01,039 Hay tres veces que te diga depende, que te diga espera 345 00:14:01,039 --> 00:14:02,600 O que te responda, pregunta 346 00:14:02,600 --> 00:14:04,120 ¿El ser visible 347 00:14:04,120 --> 00:14:06,600 No sería mejor meterlo en el constructor 348 00:14:06,600 --> 00:14:07,860 De base que sea tú? 349 00:14:09,399 --> 00:14:10,039 Depende, ya 350 00:14:10,039 --> 00:14:13,080 Sí, no, a ver, efectivamente 351 00:14:13,080 --> 00:14:15,519 Esto ya sí que es una cuestión de gustos 352 00:14:15,519 --> 00:14:16,539 Pero como por ver la generalidad 353 00:14:16,539 --> 00:14:17,500 Claro, en este caso 354 00:14:17,500 --> 00:14:21,789 Pues tú lo puedes poner aquí 355 00:14:21,789 --> 00:14:23,690 Y listo 356 00:14:23,690 --> 00:14:24,950 Vale 357 00:14:24,950 --> 00:14:28,870 Estamos en el método 358 00:14:28,870 --> 00:14:32,690 Set visible 359 00:14:32,690 --> 00:14:34,649 Ah, claro, ya decía yo por qué me lo pones rojo 360 00:14:34,649 --> 00:14:36,889 Vale, lo podemos poner ahí 361 00:14:36,889 --> 00:14:38,389 No hace falta que pongamos el dis 362 00:14:38,389 --> 00:14:40,429 Ya lo sabéis, estamos en el propio frame 363 00:14:40,429 --> 00:14:43,200 Eh 364 00:14:43,200 --> 00:14:45,639 Sí, pero por qué llegas tarde 365 00:14:45,639 --> 00:14:49,639 Bueno, adelante 366 00:14:49,639 --> 00:14:51,220 Pero no entréis así alegremente 367 00:14:51,220 --> 00:14:52,360 Que lo he dicho ya tres veces 368 00:14:52,360 --> 00:14:54,080 Tenéis que llamar, preguntar si se puede 369 00:14:54,080 --> 00:15:01,399 En realidad todos están sufriendo por culpa de Ángel 370 00:15:01,399 --> 00:15:02,659 Que es el que ha entrado aquí como 371 00:15:02,659 --> 00:15:08,950 Vale, pues aquí el disk 372 00:15:08,950 --> 00:15:10,389 No hace falta ponerlo, como bien sabéis 373 00:15:10,389 --> 00:15:12,190 Porque se refiere al propio frame 374 00:15:12,190 --> 00:15:14,809 ¿Vale? Si lo ponemos aquí 375 00:15:14,809 --> 00:15:17,250 Pues aquí obviamente nos sobraría, lógicamente 376 00:15:17,250 --> 00:15:18,889 Y el size también 377 00:15:18,889 --> 00:15:21,250 El size también lo podríamos fijar aquí dentro 378 00:15:21,250 --> 00:15:22,970 Y aquí de hecho 379 00:15:22,970 --> 00:15:24,250 Podríamos ajustarlo 380 00:15:24,250 --> 00:15:27,470 Porque tenemos la información de todos los 381 00:15:27,470 --> 00:15:28,470 componentes que hay 382 00:15:28,470 --> 00:15:31,509 ¿podrías sacar el tamaño de la pantalla 383 00:15:31,509 --> 00:15:32,629 de la que estás llamando? 384 00:15:33,330 --> 00:15:35,649 ¿de alguna manera? ¿podrías llamar algún tipo de método? 385 00:15:35,950 --> 00:15:37,370 sí, seguramente haya un 386 00:15:37,370 --> 00:15:38,590 getSize o algo así 387 00:15:38,590 --> 00:15:39,990 si es que esto tiene 388 00:15:39,990 --> 00:15:43,610 hay un getSize que te da el objeto de dimensiones 389 00:15:43,610 --> 00:15:45,610 con el tamaño que tiene el frame 390 00:15:45,610 --> 00:15:47,309 el panel también tendrá un getSize 391 00:15:47,309 --> 00:15:48,909 o sea, puedes jugar un montón con 392 00:15:48,909 --> 00:15:50,289 ¿vale? 393 00:15:51,129 --> 00:15:53,809 entonces aquí podríamos hacer también el setSize 394 00:15:53,809 --> 00:15:54,750 y 395 00:15:54,750 --> 00:15:56,250 ¿y para el monitor? 396 00:15:56,250 --> 00:15:58,049 para que se saque el tamaño del monitor? 397 00:15:58,850 --> 00:15:59,590 No lo sé. 398 00:15:59,690 --> 00:16:00,529 Pregúntese a la HGPT. 399 00:16:00,629 --> 00:16:01,129 Seguro que sí. 400 00:16:01,409 --> 00:16:01,809 Seguro. 401 00:16:02,070 --> 00:16:03,730 A ver, hay millones de métodos, 402 00:16:03,870 --> 00:16:04,669 millones de clases, 403 00:16:04,889 --> 00:16:05,830 millones de todos. 404 00:16:05,970 --> 00:16:07,330 Ya te digo que hay libros 405 00:16:07,330 --> 00:16:08,149 de miles de páginas 406 00:16:08,149 --> 00:16:09,070 solo de estas cosas. 407 00:16:09,190 --> 00:16:10,149 Si hay métodos de sacar ahora 408 00:16:10,149 --> 00:16:10,669 del sistema, 409 00:16:10,789 --> 00:16:11,470 hay métodos de sacar. 410 00:16:11,570 --> 00:16:11,950 Claro, 411 00:16:12,230 --> 00:16:13,590 habrá métodos para todo, 412 00:16:13,889 --> 00:16:14,429 supongo. 413 00:16:16,389 --> 00:16:17,590 Vale, pues, 414 00:16:18,169 --> 00:16:18,549 por ejemplo, 415 00:16:18,629 --> 00:16:19,470 lo podemos poner aquí 416 00:16:19,470 --> 00:16:20,029 y ya está. 417 00:16:21,570 --> 00:16:22,850 Y si lo ponemos aquí, 418 00:16:23,110 --> 00:16:24,269 pues ya no lo pondríamos aquí. 419 00:16:24,789 --> 00:16:25,429 Bueno, detalles. 420 00:16:26,250 --> 00:16:27,789 Vale, pero ahora 421 00:16:27,789 --> 00:16:31,129 Vámonos a programar 422 00:16:31,129 --> 00:16:32,370 Ahora que es lo que nos interesa 423 00:16:32,370 --> 00:16:33,809 Porque todo esto de Swing 424 00:16:33,809 --> 00:16:36,350 Sobre todo es interesante 425 00:16:36,350 --> 00:16:38,730 Porque nos sigue ayudando 426 00:16:38,730 --> 00:16:39,789 A aprender a programar 427 00:16:39,789 --> 00:16:41,330 Esa es la parte más interesante 428 00:16:41,330 --> 00:16:43,529 ¿Vale? 429 00:16:43,710 --> 00:16:45,870 Porque en sí con Swing es difícil que trabajéis 430 00:16:45,870 --> 00:16:47,230 Con JavaFX puede que sí 431 00:16:47,230 --> 00:16:49,870 Y creo que os lo vamos a contar 432 00:16:49,870 --> 00:16:51,789 ¿Vale? Un poquito 433 00:16:51,789 --> 00:16:56,690 Vale, pues a ver 434 00:16:56,690 --> 00:16:57,490 Entonces 435 00:16:57,490 --> 00:17:00,049 Está todo claro en lo que estamos 436 00:17:00,049 --> 00:17:02,350 ¿Verdad? ¿Qué sueño tenemos? 437 00:17:03,009 --> 00:17:03,889 Si hubieras acostado antes 438 00:17:03,889 --> 00:17:05,450 En vez de estar jugando hasta las tantas 439 00:17:05,450 --> 00:17:09,690 Tendrías menos sueño 440 00:17:13,650 --> 00:17:14,410 ¿Eh? 441 00:17:16,369 --> 00:17:17,130 ¿Cómo? 442 00:17:18,630 --> 00:17:20,390 Ay, no te he entendido nada 443 00:17:20,390 --> 00:17:23,470 ¿Por qué se lo dices así de la nada? 444 00:17:23,930 --> 00:17:24,970 Porque se está durmiendo 445 00:17:24,970 --> 00:17:26,650 ¿Qué explicación puede tener eso? 446 00:17:27,170 --> 00:17:28,869 Porque no es porque yo soy muy aburrida 447 00:17:28,869 --> 00:17:29,390 ¿Verdad que no? 448 00:17:30,190 --> 00:17:32,849 Bueno, pues entonces la otra explicación es que está 449 00:17:32,849 --> 00:17:34,529 Que ha estado toda la noche jugando 450 00:17:34,529 --> 00:17:36,910 Claro 451 00:17:36,910 --> 00:17:38,549 Oye, tú haz el favor 452 00:17:38,549 --> 00:17:40,970 Bueno 453 00:17:40,970 --> 00:17:43,549 Vale, pues entonces ya estamos todos situados 454 00:17:43,549 --> 00:17:45,470 Ahora, pregunta 455 00:17:45,470 --> 00:17:46,829 No, más que pregunta 456 00:17:46,829 --> 00:17:48,150 Problema 457 00:17:48,150 --> 00:17:50,009 esta interfaz no tiene ningún sentido, 458 00:17:50,130 --> 00:17:51,970 que queramos una interfaz para que nos salude 459 00:17:51,970 --> 00:17:54,289 y que el saludito lo saque por la consola, 460 00:17:54,990 --> 00:17:56,990 porque la consola no va a estar disponible, 461 00:17:57,089 --> 00:17:57,789 no lo vamos a ver. 462 00:17:58,670 --> 00:18:01,450 De hecho, nosotros habíamos hecho aquí una etiqueta, 463 00:18:02,190 --> 00:18:04,009 un label, para poner el texto 464 00:18:04,009 --> 00:18:05,269 y que aparezca en la interfaz. 465 00:18:06,049 --> 00:18:08,230 Entonces, lo que queremos aquí es, 466 00:18:09,230 --> 00:18:11,230 en lugar de esto, esto no lo queremos, 467 00:18:12,789 --> 00:18:14,970 queremos poder acceder desde aquí, 468 00:18:14,970 --> 00:18:18,250 queremos poder acceder desde aquí 469 00:18:18,250 --> 00:18:19,890 al JLabel 470 00:18:19,890 --> 00:18:21,769 que está aquí dentro 471 00:18:21,769 --> 00:18:22,849 de este método local 472 00:18:22,849 --> 00:18:25,849 movida, pero es lo que necesitamos 473 00:18:25,849 --> 00:18:26,950 es lo que queremos 474 00:18:26,950 --> 00:18:31,349 ahora como programadores 475 00:18:31,349 --> 00:18:33,710 que ahora ya si sabéis, el programador no es solo el que sabe 476 00:18:33,710 --> 00:18:34,650 hacer if y while 477 00:18:34,650 --> 00:18:37,690 eso hace falta, si no es el que tiene 478 00:18:37,690 --> 00:18:39,809 una visión 479 00:18:39,809 --> 00:18:40,789 del mundo de los objetos 480 00:18:40,789 --> 00:18:43,769 a ver, que se os ocurre 481 00:18:43,769 --> 00:18:48,329 para poder acceder desde aquí 482 00:18:48,329 --> 00:18:49,630 ¿qué cambio? ¿qué podemos hacer? 483 00:18:49,710 --> 00:18:50,789 porque nuestro problema es que 484 00:18:50,789 --> 00:18:53,190 lo acabo de decir, que no queremos mostrar por consola 485 00:18:53,190 --> 00:18:55,410 es absurdo, queremos mostrar la interfaz gráfica 486 00:18:55,410 --> 00:18:57,589 el saludo, para eso habíamos hecho este label 487 00:18:57,589 --> 00:18:59,549 entonces yo quiero 488 00:18:59,549 --> 00:19:01,990 desde aquí acceder a ese label 489 00:19:01,990 --> 00:19:03,569 quiero desde aquí acceder 490 00:19:03,569 --> 00:19:04,809 y ponerle ahí el texto 491 00:19:04,809 --> 00:19:12,660 pero 492 00:19:12,660 --> 00:19:14,480 si ya 493 00:19:14,480 --> 00:19:18,099 El problema es cómo accedo a la etiqueta 494 00:19:18,099 --> 00:19:18,740 No el método 495 00:19:18,740 --> 00:19:21,779 Mi etiqueta es una variable local de aquí 496 00:19:21,779 --> 00:19:23,579 De este método construye interfaz 497 00:19:23,579 --> 00:19:24,500 Es una variable local de aquí 498 00:19:24,500 --> 00:19:27,220 ¿Cómo la toqueteo desde aquí? 499 00:19:27,220 --> 00:19:30,660 ¿Qué tipo de etiqueta es eso? 500 00:19:34,339 --> 00:19:35,700 ¿Se te llama ese tipo de etiqueta? 501 00:19:35,819 --> 00:19:37,019 Es que no te ha llamado ese tipo de etiqueta 502 00:19:37,019 --> 00:19:37,579 Te ha llamado un botón 503 00:19:37,579 --> 00:19:39,259 Claro, te ha llamado un botón 504 00:19:39,259 --> 00:19:42,839 Tú aquí en el GetSource no puedes sacar la etiqueta 505 00:19:42,839 --> 00:19:43,480 En ningún sitio 506 00:19:43,480 --> 00:19:47,559 ¿Qué podéis cambiar? 507 00:19:48,039 --> 00:20:00,299 ¿Cómo sales de aquí? 508 00:20:00,480 --> 00:20:02,400 ¿Cómo accedes desde aquí? ¿Qué puedes cambiar? 509 00:20:02,480 --> 00:20:04,279 ¿Qué puedes cambiar en general, en conjunto? 510 00:20:04,500 --> 00:20:06,500 ¿Qué podemos añadir? ¿Qué podemos hacer? 511 00:20:06,559 --> 00:20:07,680 Claro, lo ideal 512 00:20:07,680 --> 00:20:10,039 sería, si yo pudiera 513 00:20:10,039 --> 00:20:11,880 pasarle aquí la etiqueta 514 00:20:11,880 --> 00:20:14,539 Si yo le pudiera 515 00:20:14,539 --> 00:20:15,859 pasar aquí la etiqueta 516 00:20:15,859 --> 00:20:18,160 Qué suerte, ¿no? 517 00:20:18,380 --> 00:20:20,640 Si le paso la etiqueta, sí 518 00:20:20,640 --> 00:20:22,619 Pero obviamente no puedo tocar este método 519 00:20:22,619 --> 00:20:25,059 Este método es el método que estoy 520 00:20:25,059 --> 00:20:25,940 Silvia, cállate 521 00:20:25,940 --> 00:20:28,779 Y los de atrás igual 522 00:20:28,779 --> 00:20:31,220 Pero obviamente este método no le puedo tocar 523 00:20:31,220 --> 00:20:33,339 Porque este método está sobrescribiendo 524 00:20:33,339 --> 00:20:34,839 El de acción listener 525 00:20:34,839 --> 00:20:37,079 Este método no le puedo tocar 526 00:20:37,079 --> 00:20:39,720 Con lo cual no puedo usarlo para pasar por parámetro 527 00:20:39,720 --> 00:20:40,440 Nada 528 00:20:40,440 --> 00:20:43,119 Y sin embargo, desde aquí tengo que acceder al 529 00:20:43,119 --> 00:20:44,460 JLabel del otro sitio 530 00:20:44,460 --> 00:20:47,559 ¿Un estés? ¿Dónde? 531 00:20:50,059 --> 00:20:53,200 Yo crearía otro método que te saque 532 00:20:53,200 --> 00:20:56,799 A ver 533 00:20:56,799 --> 00:21:02,039 Podría hacer un estés, sacar el JLabel 534 00:21:02,039 --> 00:21:03,680 haciendo un estés no gano nada 535 00:21:03,680 --> 00:21:05,619 mientras esta sigue siendo variable local 536 00:21:05,619 --> 00:21:07,079 de construyente, no gano nada 537 00:21:07,079 --> 00:21:09,079 En todo caso, si la saco fuera 538 00:21:09,079 --> 00:21:11,200 la pongo como protected 539 00:21:11,200 --> 00:21:13,420 pero es que tampoco estaría accediendo 540 00:21:13,420 --> 00:21:15,579 a la label de la de arriba 541 00:21:15,579 --> 00:21:16,779 del objeto de arriba 542 00:21:16,779 --> 00:21:19,980 el extend significa que tú tienes 543 00:21:19,980 --> 00:21:21,819 tus propias propiedades 544 00:21:21,819 --> 00:21:24,059 esas, que sí, que tienen el mismo nombre 545 00:21:24,059 --> 00:21:25,420 que no tienes que escribir código 546 00:21:25,420 --> 00:21:27,799 pero no significa que sean las propiedades del objeto 547 00:21:27,799 --> 00:21:29,740 de arriba del que heredas, no, el objeto 548 00:21:29,740 --> 00:21:31,619 de arriba es uno, el de abajo es otro, que aún no 549 00:21:31,619 --> 00:21:32,319 son sus propiedades 550 00:21:32,319 --> 00:21:40,220 otra cosa que se os ocurre, sacar la etiqueta 551 00:21:40,220 --> 00:21:42,400 y ponerla estática como aquí arriba 552 00:21:42,400 --> 00:21:44,099 ponerla estática 553 00:21:44,099 --> 00:21:45,759 y acceder como variable estática 554 00:21:45,759 --> 00:21:47,299 de esta, mi ventana 555 00:21:47,299 --> 00:21:49,640 a ver, como poder se puede 556 00:21:49,640 --> 00:21:51,220 eso lo podríamos hacer 557 00:21:51,220 --> 00:21:57,440 como solución de programación 558 00:21:57,440 --> 00:21:58,819 pues hombre, a ver 559 00:21:58,819 --> 00:22:01,619 eso es una cosa que podríamos 560 00:22:01,619 --> 00:22:02,559 hacer, esto 561 00:22:02,559 --> 00:22:05,200 lo sacamos aquí 562 00:22:05,200 --> 00:22:07,980 lo ponemos como 563 00:22:07,980 --> 00:22:11,339 estática, vale 564 00:22:11,339 --> 00:22:13,819 pero, ahora que pasa 565 00:22:13,819 --> 00:22:15,299 que sois muy listos vosotros 566 00:22:15,299 --> 00:22:17,460 si lo ponemos como estático 567 00:22:17,460 --> 00:22:19,900 que ya no podemos 568 00:22:19,900 --> 00:22:21,119 acceder a ella 569 00:22:21,119 --> 00:22:24,099 desde el constructor y desde el método 570 00:22:24,099 --> 00:22:25,400 porque si es estática 571 00:22:25,400 --> 00:22:27,720 solo podemos acceder desde métodos estáticos 572 00:22:27,720 --> 00:22:29,299 con lo cual la hemos cagado 573 00:22:29,299 --> 00:22:32,039 ¿vale? si es estática 574 00:22:32,039 --> 00:22:34,500 solo podemos acceder desde métodos estáticos 575 00:22:34,500 --> 00:22:36,099 luego no puedo acceder 576 00:22:36,099 --> 00:22:37,579 desde el constructor que es imposible 577 00:22:37,579 --> 00:22:39,900 no le puedo hacer estático al constructor por razones obvias 578 00:22:39,900 --> 00:22:42,440 ¿puedo construir algo que 579 00:22:42,440 --> 00:22:44,359 no ha funcionado bien 580 00:22:44,359 --> 00:22:45,619 para que se vea en nave 581 00:22:45,619 --> 00:22:48,019 dártelo en la función 582 00:22:48,019 --> 00:22:49,180 de construir interfaz 583 00:22:49,180 --> 00:22:50,559 y se ve 584 00:22:50,559 --> 00:22:52,400 armazenando una variable 585 00:22:52,400 --> 00:22:54,519 y luego pasarle esta variable 586 00:22:54,519 --> 00:22:55,319 a escuchasaludar 587 00:22:55,319 --> 00:23:00,700 pasárselo 588 00:23:00,700 --> 00:23:03,079 vale, puedes hacerte un get 589 00:23:03,079 --> 00:23:04,420 o sacarla fuera, muy bien 590 00:23:04,420 --> 00:23:06,299 y el siguiente paso que me has dicho, ¿cuál es? 591 00:23:07,960 --> 00:23:09,240 una vez lo tienes fuera 592 00:23:09,240 --> 00:23:10,680 pasárselo a escuchasaludar 593 00:23:10,680 --> 00:23:11,900 ¿pero cómo? ¿por dónde? 594 00:23:11,900 --> 00:23:24,970 y luego que haces 595 00:23:24,970 --> 00:23:25,809 o sea por ejemplo 596 00:23:25,809 --> 00:23:26,930 te haces aquí un método 597 00:23:26,930 --> 00:23:27,150 ¿no? 598 00:23:28,670 --> 00:23:29,069 vale 599 00:23:29,069 --> 00:23:30,289 este método 600 00:23:30,289 --> 00:23:30,869 por ejemplo 601 00:23:30,869 --> 00:23:31,829 ¿cómo le quieres llamar? 602 00:23:33,849 --> 00:23:35,029 no igual que el de arriba 603 00:23:35,029 --> 00:23:35,829 no puede ser 604 00:23:37,829 --> 00:23:38,990 claro para que si le pasas 605 00:23:38,990 --> 00:23:39,869 el parámetro de etiqueta 606 00:23:39,869 --> 00:23:40,309 también 607 00:23:40,309 --> 00:23:42,210 no pero es que este 608 00:23:42,210 --> 00:23:42,990 no no no no 609 00:23:42,990 --> 00:23:43,650 sobre escribirlo 610 00:23:43,650 --> 00:23:44,049 no o sea 611 00:23:44,049 --> 00:23:46,470 yo tengo que hacer otro método distinto 612 00:23:46,470 --> 00:23:48,250 entonces, ¿para qué lo voy a llamar igual que el de arriba? 613 00:23:48,609 --> 00:23:50,269 es que si le paso aquí otro parámetro 614 00:23:50,269 --> 00:23:51,289 ya es un método distinto 615 00:23:51,289 --> 00:23:53,569 no tiene sentido, vale 616 00:23:53,569 --> 00:23:55,789 en cualquier caso no vais mal 617 00:23:55,789 --> 00:23:57,470 pero yo creo que no 618 00:23:57,470 --> 00:23:59,930 vale, me estáis diciendo 619 00:23:59,930 --> 00:24:02,410 le ponemos aquí un método, pero con la idea de llamarlo 620 00:24:02,410 --> 00:24:03,609 desde aquí, porque 621 00:24:03,609 --> 00:24:06,470 de lo que no podemos escaparnos 622 00:24:06,470 --> 00:24:08,369 es que cuando el evento 623 00:24:08,369 --> 00:24:10,630 salte, al método que se va 624 00:24:10,630 --> 00:24:12,170 a llamar es a este, es el de partida 625 00:24:12,170 --> 00:24:13,210 De ahí no podemos sacar 626 00:24:13,210 --> 00:24:16,769 Entonces este método podría llamar a otro 627 00:24:16,769 --> 00:24:18,970 Que si es al que se le ha pasado 628 00:24:18,970 --> 00:24:19,829 La esa, ¿no? 629 00:24:21,069 --> 00:24:22,809 Ya, vale, pero ¿y cómo se le ha pasado 630 00:24:22,809 --> 00:24:24,130 A ese otro método 631 00:24:24,130 --> 00:24:25,849 Esa propiedad? ¿Cómo se le ha pasado? 632 00:24:25,970 --> 00:24:26,650 Estamos en las mismas 633 00:24:26,650 --> 00:24:29,289 ¿Cómo le llega a este método? 634 00:24:30,869 --> 00:24:32,009 El método que sea 635 00:24:32,009 --> 00:24:34,450 No, no 636 00:24:34,450 --> 00:24:35,529 No, no, no, no 637 00:24:35,529 --> 00:24:38,029 Efectivamente 638 00:24:38,029 --> 00:24:39,529 Tú quieres esto, ¿no? 639 00:24:39,990 --> 00:24:41,630 J, label, texto 640 00:24:41,630 --> 00:24:44,349 un método y aquí ya trabajar 641 00:24:44,349 --> 00:24:46,170 con la JLabel haciendo lo que fuera 642 00:24:46,170 --> 00:24:50,509 haciendo lo que fuera, pues por ejemplo 643 00:24:50,509 --> 00:24:54,309 texto.sectest 644 00:24:54,309 --> 00:24:55,970 hola 645 00:24:55,970 --> 00:24:57,990 por ejemplo 646 00:24:57,990 --> 00:25:00,529 lo que fuera que quisiéramos hacer 647 00:25:00,529 --> 00:25:02,470 y tú quieres 648 00:25:02,470 --> 00:25:04,430 llamar a recibe 649 00:25:04,430 --> 00:25:06,470 desde aquí, por ejemplo, ya, claro 650 00:25:06,470 --> 00:25:08,289 pero este texto que le tienes que pasar 651 00:25:08,289 --> 00:25:10,049 ¿cómo se lo pasas? estamos en las mismas 652 00:25:10,049 --> 00:25:11,849 Podríamos pasarle el objeto entero, ¿no? 653 00:25:11,849 --> 00:25:12,630 Le puede pasar el... 654 00:25:12,630 --> 00:25:13,950 ¿Pero desde dónde? 655 00:25:14,410 --> 00:25:15,890 Ese objeto tiene que ser el otro. 656 00:25:16,970 --> 00:25:17,809 Desde el main, ¿no? 657 00:25:18,690 --> 00:25:20,170 ¿Desde el main cómo? 658 00:25:20,710 --> 00:25:21,849 Pasarle el objeto entero. 659 00:25:21,950 --> 00:25:23,349 ¿Pasárselo dónde y en qué momento? 660 00:25:24,410 --> 00:25:26,529 Porque aquí no estamos llamando a ningún método. 661 00:25:26,690 --> 00:25:28,630 Aquí lo único que estamos haciendo es instanciarlo. 662 00:25:30,369 --> 00:25:32,569 Sí, pues claro, ahí habría que añadirlo. 663 00:25:36,240 --> 00:25:40,579 El texto de lo que pone en el propio botón 664 00:25:40,579 --> 00:25:41,779 sí se puede pasar con el método. 665 00:25:41,779 --> 00:25:52,039 O sea, por ejemplo, lo que estáis diciendo es, escucha, saludar y aquí ¿qué quieres hacer? 666 00:25:55,630 --> 00:25:59,269 Pues aquí no vas a llamar al método porque tú aquí no quieres que salte el evento en este momento. 667 00:25:59,430 --> 00:26:00,509 El evento no salta por programa. 668 00:26:01,130 --> 00:26:03,750 El evento salta asíncronamente cuando le das al botón. 669 00:26:05,690 --> 00:26:07,829 Pero a ver, en realidad vais bien. 670 00:26:07,990 --> 00:26:09,029 Está casi, casi. 671 00:26:09,029 --> 00:26:11,289 el asunto es 672 00:26:11,289 --> 00:26:13,450 desde aquí 673 00:26:13,450 --> 00:26:15,289 a lo que sí que estamos llamando 674 00:26:15,289 --> 00:26:16,990 es al constructor 675 00:26:16,990 --> 00:26:18,650 al constructor sí 676 00:26:18,650 --> 00:26:21,589 pues pasémosle al constructor 677 00:26:21,589 --> 00:26:22,789 hagamos un constructor 678 00:26:22,789 --> 00:26:25,049 que admita parámetros 679 00:26:25,049 --> 00:26:27,369 yo puedo hacer aquí con todos los constructores 680 00:26:27,369 --> 00:26:29,009 que me den la gana, si yo quiero 681 00:26:29,009 --> 00:26:30,990 hagamos un constructor 682 00:26:30,990 --> 00:26:33,210 que reciba los componentes que yo quiero 683 00:26:33,210 --> 00:26:35,390 y que esos componentes inicialicen 684 00:26:35,390 --> 00:26:36,890 propiedades de escucha saludar 685 00:26:36,890 --> 00:26:39,009 Y desde el momento en que están aquí esas propiedades, 686 00:26:39,210 --> 00:26:40,849 ahora este ya accede a ellas sin problema. 687 00:26:43,599 --> 00:26:43,819 ¿Vale? 688 00:26:44,640 --> 00:26:46,519 Es decir, lo que me estabais diciendo de 689 00:26:46,519 --> 00:26:48,579 ahora llamo a un método para 690 00:26:48,579 --> 00:26:50,839 inicializar, sí, tendría sentido 691 00:26:50,839 --> 00:26:52,500 si ese método es para 692 00:26:52,500 --> 00:26:54,240 inicializar propiedades que están aquí fuera. 693 00:26:55,880 --> 00:26:56,720 Pero no para 694 00:26:56,720 --> 00:26:58,640 lanzar ya el evento. El evento no se 695 00:26:58,640 --> 00:27:00,519 lanza llamando a ningún, por 696 00:27:00,519 --> 00:27:02,859 código. Es decir, la idea 697 00:27:02,859 --> 00:27:04,640 sería, ¿qué 698 00:27:04,640 --> 00:27:06,619 problema tenía yo aquí? Que yo 699 00:27:06,619 --> 00:27:08,680 aquí necesito, en lugar de hacer 700 00:27:08,680 --> 00:27:11,200 Necesito acceder a esta etiqueta 701 00:27:11,200 --> 00:27:12,839 Y ponerle esto 702 00:27:12,839 --> 00:27:15,299 Sextest hola 703 00:27:15,299 --> 00:27:17,759 Y aquí necesito 704 00:27:17,759 --> 00:27:19,839 Poner esto 705 00:27:19,839 --> 00:27:23,369 Sextest 706 00:27:23,369 --> 00:27:27,910 Adiós 707 00:27:29,529 --> 00:27:32,369 Claro, entonces mi problema es 708 00:27:32,369 --> 00:27:33,529 Ya, y texto 709 00:27:33,529 --> 00:27:35,170 ¿Cómo coge valor texto? 710 00:27:35,170 --> 00:27:35,990 ¿Cómo coge valor? 711 00:27:36,569 --> 00:27:37,309 Vamos a hacer una cosa 712 00:27:37,309 --> 00:27:40,150 Para que texto sea accesible desde aquí 713 00:27:40,150 --> 00:27:41,029 Sin ningún problema 714 00:27:41,029 --> 00:27:43,089 vamos a hacer que sea una variable de clase 715 00:27:43,089 --> 00:27:45,190 pues que sea una variable de clase, ¿por qué no? 716 00:27:45,269 --> 00:27:47,549 si esto es una clase, le pongo todas las variables que yo quiera 717 00:27:47,549 --> 00:27:48,670 no es una interfaz 718 00:27:48,670 --> 00:27:51,210 pues venga, esto que sea una variable de clase 719 00:27:51,210 --> 00:27:56,519 y ahora 720 00:27:56,519 --> 00:27:58,579 a mí me interesa que esta variable 721 00:27:58,579 --> 00:28:00,940 texto se cargue 722 00:28:00,940 --> 00:28:02,880 se cargue con la etiqueta 723 00:28:02,880 --> 00:28:04,660 del main en el momento 724 00:28:04,660 --> 00:28:06,559 en el cual creo 725 00:28:06,559 --> 00:28:07,220 el objeto 726 00:28:07,220 --> 00:28:10,500 ¿vale? bueno pues entonces 727 00:28:10,500 --> 00:28:12,279 estupendamente me hago un constructor 728 00:28:12,279 --> 00:28:16,920 o sería más fácil con el constructor 729 00:28:16,920 --> 00:28:18,779 pero ya que estabais apuntando con este método 730 00:28:18,779 --> 00:28:21,140 pues podríais, a lo mejor así lo veis más claro 731 00:28:21,140 --> 00:28:22,200 porque estabais en esta línea 732 00:28:22,200 --> 00:28:24,140 pues hacéis esto 733 00:28:24,140 --> 00:28:27,059 dis.texto 734 00:28:27,059 --> 00:28:28,460 igual a 735 00:28:28,460 --> 00:28:30,279 texto 736 00:28:30,279 --> 00:28:32,839 es decir, este método 737 00:28:32,839 --> 00:28:36,160 sería solo 738 00:28:36,160 --> 00:28:40,740 sería solo para inicializar 739 00:28:40,740 --> 00:28:42,720 esta variable texto 740 00:28:42,720 --> 00:28:44,819 de clase, inicializarla con la label 741 00:28:44,819 --> 00:28:46,559 que yo le dé, con la que a mí me dé la gana. 742 00:28:47,279 --> 00:28:48,339 ¿Vale? Sería solo para eso. 743 00:28:50,099 --> 00:28:50,700 Y aquí 744 00:28:50,700 --> 00:28:51,660 me falta el punto y coma. 745 00:28:52,680 --> 00:28:54,640 Sería solo para eso, ya está, no para saltar el evento. 746 00:28:55,140 --> 00:28:56,359 Entonces, llamando a este método, 747 00:28:56,880 --> 00:28:58,900 yo inicializo esta variable de clase, 748 00:28:59,000 --> 00:29:00,539 esta variable, con la JLabel 749 00:29:00,539 --> 00:29:02,180 que a mí me dé la gana, llamando a este método. 750 00:29:02,660 --> 00:29:04,119 Y ya está, y se queda inicializada. 751 00:29:04,619 --> 00:29:06,440 Y ahora ya, cada vez que salte la acción 752 00:29:06,440 --> 00:29:08,000 perform, cada vez que salte, 753 00:29:08,819 --> 00:29:10,240 ¿a quién va a estar accediendo? 754 00:29:10,299 --> 00:29:10,599 A esta. 755 00:29:10,599 --> 00:29:13,920 y esta ya se inicializó 756 00:29:13,920 --> 00:29:16,319 en su momento con la que me interesa 757 00:29:16,319 --> 00:29:18,279 entonces que tendríamos que hacer 758 00:29:18,279 --> 00:29:20,259 aquí en mi ventana 759 00:29:20,259 --> 00:29:22,180 pues después de haber instanciado 760 00:29:22,180 --> 00:29:24,019 el objeto, después de haberlo instanciado 761 00:29:24,019 --> 00:29:25,500 decirle oye tú, objeto 762 00:29:25,500 --> 00:29:27,740 recibe a esta 763 00:29:27,740 --> 00:29:29,539 recibe a esta de aquí 764 00:29:29,539 --> 00:29:33,460 recibe a esa 765 00:29:33,460 --> 00:29:35,579 ¿vale? entonces 766 00:29:35,579 --> 00:29:37,299 creamos este objeto 767 00:29:37,299 --> 00:29:40,619 inicializamos su variable 768 00:29:40,619 --> 00:29:41,799 una variable suya 769 00:29:41,799 --> 00:29:43,519 con esta JLabel 770 00:29:43,519 --> 00:29:46,799 digamos que le terminamos 771 00:29:46,799 --> 00:29:47,640 de personalizar 772 00:29:47,640 --> 00:29:49,519 y ya está 773 00:29:49,519 --> 00:29:50,420 y el objeto se queda ahí 774 00:29:50,420 --> 00:29:51,559 y luego lo asociamos aquí 775 00:29:51,559 --> 00:29:53,559 ¿vale? 776 00:29:53,680 --> 00:29:54,079 entonces 777 00:29:54,079 --> 00:29:55,960 habremos instanciado el objeto 778 00:29:55,960 --> 00:29:58,180 al hacer el recibe texto 779 00:29:58,180 --> 00:29:59,740 pues 780 00:29:59,740 --> 00:30:01,079 le habremos pasado 781 00:30:01,079 --> 00:30:02,319 la label que nos interesa 782 00:30:02,319 --> 00:30:02,819 del frame 783 00:30:02,819 --> 00:30:03,720 se la habremos pasado 784 00:30:03,720 --> 00:30:05,460 y la habrá usado 785 00:30:05,460 --> 00:30:06,920 para inicializar 786 00:30:06,920 --> 00:30:07,700 su variable local 787 00:30:07,700 --> 00:30:08,900 y ya está 788 00:30:08,900 --> 00:30:09,519 y ahora el método 789 00:30:09,519 --> 00:30:10,180 de acción perform 790 00:30:10,180 --> 00:30:11,480 le accede ahí tranquilamente 791 00:30:11,480 --> 00:30:14,880 entonces nuestro problema de partida era 792 00:30:14,880 --> 00:30:17,079 que este action performance tenía que acceder 793 00:30:17,079 --> 00:30:18,700 a una variable 794 00:30:18,700 --> 00:30:21,319 que no podía recibir por parámetro 795 00:30:21,319 --> 00:30:22,619 ese era el problema de partida 796 00:30:22,619 --> 00:30:25,220 luego, si no la puedes recibir por parámetro 797 00:30:25,220 --> 00:30:26,460 no hay tutía 798 00:30:26,460 --> 00:30:28,660 hay que ponerla como variable de clase 799 00:30:28,660 --> 00:30:30,619 no hay tutía, o la recibes por parámetro 800 00:30:30,619 --> 00:30:31,779 o es una variable de clase 801 00:30:31,779 --> 00:30:34,480 vale, desde el momento en que hemos decidido 802 00:30:34,480 --> 00:30:36,559 que es una variable de clase porque por parámetro 803 00:30:36,559 --> 00:30:38,660 no puedes recibirla, tienes que decir 804 00:30:38,660 --> 00:30:40,079 y ahora esa variable de clase 805 00:30:40,079 --> 00:30:42,039 cómo le doy yo el valor 806 00:30:42,039 --> 00:30:44,259 que me interesa, que es el label del frame 807 00:30:44,259 --> 00:30:45,380 cómo se lo doy yo 808 00:30:45,380 --> 00:30:47,880 bueno, pues venga, me hago un método 809 00:30:47,880 --> 00:30:49,400 en el cual 810 00:30:49,400 --> 00:30:50,779 es como un set 811 00:30:50,779 --> 00:30:54,039 en el cual 812 00:30:54,039 --> 00:30:56,220 de hecho, igual hasta se ve 813 00:30:56,220 --> 00:30:58,119 más claro, si la llamamos 814 00:30:58,119 --> 00:30:59,880 como un set 815 00:30:59,880 --> 00:31:03,319 me hago un set 816 00:31:03,319 --> 00:31:04,900 de esta variable 817 00:31:04,900 --> 00:31:08,880 y ahora ya mi action 818 00:31:08,880 --> 00:31:10,920 performance tranquilamente va a acceder a ese 819 00:31:10,920 --> 00:31:12,680 me hago un set de esta variable y ya está 820 00:31:12,680 --> 00:31:15,039 y ahora en mi frame 821 00:31:15,039 --> 00:31:17,759 construyo 822 00:31:17,759 --> 00:31:18,880 el objeto listener 823 00:31:18,880 --> 00:31:20,680 y le digo, oye tú 824 00:31:20,680 --> 00:31:24,160 tu propiedad 825 00:31:24,160 --> 00:31:26,099 texto, la JLabel 826 00:31:26,099 --> 00:31:27,079 que sea esta 827 00:31:27,079 --> 00:31:29,740 genial, pues ya está 828 00:31:29,740 --> 00:31:36,539 entonces ahora ya este escuchador 829 00:31:36,539 --> 00:31:38,359 está asociado 830 00:31:38,359 --> 00:31:39,259 a estos botones 831 00:31:39,259 --> 00:31:41,980 y cuando este escuchador salte 832 00:31:41,980 --> 00:31:44,259 la etiqueta con la que está trabajando 833 00:31:44,259 --> 00:31:46,339 es esta, porque es la que le hemos pasado a parámetro 834 00:31:46,339 --> 00:31:46,779 es esa 835 00:31:46,779 --> 00:31:52,019 y así podríamos 836 00:31:52,019 --> 00:31:54,779 y así podríamos 837 00:31:54,779 --> 00:31:56,940 hacer que esta interfaz trabajara con muchas 838 00:31:56,940 --> 00:31:59,180 más cosas, si yo quiero que no solo trabaje con la etiqueta 839 00:31:59,180 --> 00:32:00,940 sino que trabaje con un montón de 840 00:32:00,940 --> 00:32:02,599 cosas de la interfaz, además de la etiqueta 841 00:32:02,599 --> 00:32:04,960 pues me cambie el texto de los 842 00:32:04,960 --> 00:32:06,779 botones, por ejemplo 843 00:32:06,779 --> 00:32:13,519 que me los intercambie 844 00:32:13,519 --> 00:32:14,839 por ejemplo 845 00:32:14,839 --> 00:32:22,430 pues entonces si yo, si queremos 846 00:32:22,430 --> 00:32:24,190 que cuando salte el evento, además 847 00:32:24,190 --> 00:32:26,089 de saludar nos intercambie 848 00:32:26,089 --> 00:32:27,549 el texto entre los botones 849 00:32:27,549 --> 00:32:30,049 pues necesita acceder también a esas dos 850 00:32:30,049 --> 00:32:31,549 propiedades, necesita acceder también a ellas 851 00:32:31,549 --> 00:32:34,029 pues en la acción performe entonces 852 00:32:34,029 --> 00:32:36,289 va a necesitar tener estas tres propiedades de clase 853 00:32:36,289 --> 00:32:38,109 pues vamos a hacerle los 854 00:32:38,109 --> 00:32:38,670 tres set 855 00:32:38,670 --> 00:32:48,089 hago solamente el 856 00:32:48,089 --> 00:32:51,430 donde 857 00:32:51,430 --> 00:32:54,609 donde está aquí para que se lo sea, ah aquí 858 00:32:54,609 --> 00:32:56,470 vale, quiero solamente 859 00:32:56,470 --> 00:32:58,190 el set 860 00:32:58,190 --> 00:33:01,250 y 861 00:33:01,250 --> 00:33:03,309 ah, vale, vale, vale 862 00:33:03,309 --> 00:33:04,569 select setters, vale 863 00:33:04,569 --> 00:33:06,150 y 864 00:33:06,150 --> 00:33:09,109 en el texto ya lo tengo 865 00:33:09,109 --> 00:33:11,109 así que eso es una tontería, por eso me lo ha quitado 866 00:33:11,109 --> 00:33:11,549 vale 867 00:33:11,549 --> 00:33:14,049 vale, pues ya tengo 868 00:33:14,049 --> 00:33:15,970 los tres sets 869 00:33:15,970 --> 00:33:19,130 entonces lo que me 870 00:33:19,130 --> 00:33:21,029 falta ahora en mi main es después de haber 871 00:33:21,029 --> 00:33:22,890 creado el objeto, pues 872 00:33:22,890 --> 00:33:23,809 pasarle 873 00:33:23,809 --> 00:33:26,170 escucha 874 00:33:26,170 --> 00:33:30,609 saludar.setDespide 875 00:33:30,609 --> 00:33:31,829 con el botón de despide 876 00:33:31,829 --> 00:33:40,009 y escucha saludar.setSaluda 877 00:33:40,009 --> 00:33:41,069 con el botón de saluda. 878 00:33:42,089 --> 00:33:46,289 Vale, entonces mi ActionListener ya puede trabajar con estas tres cosas tranquilamente 879 00:33:46,289 --> 00:33:47,349 porque se las he pasado. 880 00:33:49,690 --> 00:33:51,890 Entonces al haberse las pasado en el set 881 00:33:51,890 --> 00:33:54,930 pues ya las tiene aquí dentro y ya la acción 882 00:33:54,930 --> 00:33:58,250 Performed hace con ellas lo que quiera. Por ejemplo, hemos dicho 883 00:33:58,250 --> 00:34:00,789 que cambiar el texto de los botones 884 00:34:00,789 --> 00:34:01,650 entonces 885 00:34:01,650 --> 00:34:04,730 si estábamos en el if aparte de poner hola 886 00:34:04,730 --> 00:34:06,029 pues entonces 887 00:34:06,029 --> 00:34:08,329 al botón de saluda 888 00:34:08,329 --> 00:34:12,630 tendríamos que intercambiarlos 889 00:34:12,630 --> 00:34:13,789 entonces 890 00:34:13,789 --> 00:34:16,469 saluda 891 00:34:16,469 --> 00:34:17,530 ya no sabemos lo que tendrá 892 00:34:17,530 --> 00:34:19,289 pues entonces aquí podremos hacer 893 00:34:19,289 --> 00:34:22,530 si saluda.gettext 894 00:34:23,750 --> 00:34:26,130 .equals 895 00:34:26,130 --> 00:34:29,090 Saludar y despedir 896 00:34:29,090 --> 00:34:29,929 Eran las dos 897 00:34:29,929 --> 00:34:31,750 Claro 898 00:34:31,750 --> 00:34:34,389 Es saludar 899 00:34:34,389 --> 00:34:36,590 Pues entonces te vamos a poner a ti 900 00:34:36,590 --> 00:34:40,869 Saluda.getTest 901 00:34:40,869 --> 00:34:44,409 No, perdón, setTest 902 00:34:44,409 --> 00:34:50,800 Despedir 903 00:34:50,800 --> 00:34:53,590 Y 904 00:34:53,590 --> 00:35:01,719 Y lo mismo 905 00:35:01,719 --> 00:35:02,900 Y si no es saludar 906 00:35:02,900 --> 00:35:06,260 Entonces saluda.setTest 907 00:35:06,260 --> 00:35:13,800 si no es saludar es que la despedir 908 00:35:13,800 --> 00:35:15,420 entonces le ponemos saludar 909 00:35:15,420 --> 00:35:18,059 bueno y esto lo sacamos 910 00:35:18,059 --> 00:35:20,199 del if de arriba porque se va a hacer en ambos casos 911 00:35:20,199 --> 00:35:21,940 entonces esto lo podemos 912 00:35:21,940 --> 00:35:23,860 sacar de aquí 913 00:35:23,860 --> 00:35:25,920 una vez que hemos hecho lo del saludito 914 00:35:25,920 --> 00:35:27,300 pues ya hacemos el intercambio 915 00:35:27,300 --> 00:35:32,360 entonces y esto lo tendremos que hacer con el otro botón 916 00:35:32,360 --> 00:35:33,940 seguro que lo podemos 917 00:35:33,940 --> 00:35:35,980 hacer con mejor código y menos if 918 00:35:35,980 --> 00:35:36,880 y menos todo pero 919 00:35:36,880 --> 00:35:39,920 y si el texto 920 00:35:39,920 --> 00:35:40,800 de despide 921 00:35:40,800 --> 00:35:44,900 Es saludar, entonces a despide 922 00:35:44,900 --> 00:35:45,440 Ponle 923 00:35:45,440 --> 00:35:51,579 De hecho es que es una tontería hacerlo con otro if 924 00:35:51,579 --> 00:35:53,099 Porque, claro 925 00:35:53,099 --> 00:35:55,559 No, no, no, o sea, tengo que cambiar el otro 926 00:35:55,559 --> 00:35:57,980 Entonces, si saluda tiene saludar 927 00:35:57,980 --> 00:35:59,420 El otro tiene despedir, con lo cual 928 00:35:59,420 --> 00:36:01,239 A saluda le ponemos, este es despedir 929 00:36:01,239 --> 00:36:02,099 Y al otro le ponemos 930 00:36:02,099 --> 00:36:05,889 Y entonces al otro 931 00:36:05,889 --> 00:36:08,789 Y a despide 932 00:36:08,789 --> 00:36:11,190 Le ponemos 933 00:36:11,190 --> 00:36:13,010 Saludar 934 00:36:13,010 --> 00:36:17,099 Y aquí 935 00:36:17,099 --> 00:36:21,659 eso 936 00:36:21,659 --> 00:36:24,059 y aquí a despide le ponemos 937 00:36:24,059 --> 00:36:24,880 despedir 938 00:36:24,880 --> 00:36:37,219 bueno, pues ya hemos hecho un action perform 939 00:36:37,219 --> 00:36:39,039 que ha necesitado acceder a tres 940 00:36:39,039 --> 00:36:40,340 componentes de la interfaz 941 00:36:40,340 --> 00:36:42,960 al texto para darnos el mensajito 942 00:36:42,960 --> 00:36:45,320 y a los botones para intercambiar 943 00:36:45,320 --> 00:36:46,320 el texto que tuvieran 944 00:36:46,320 --> 00:36:48,079 si tenían uno le ponemos el otro 945 00:36:48,079 --> 00:36:51,059 ¿vale? entonces para poder 946 00:36:51,059 --> 00:36:53,219 acceder a ellos, repito 947 00:36:53,219 --> 00:36:55,360 como es imposible pasárselo por parámetros 948 00:36:55,360 --> 00:36:56,639 solo hay una alternativa 949 00:36:56,639 --> 00:36:58,480 que es que los tenga en la clase 950 00:36:58,480 --> 00:37:00,659 un segundo, y para que los tenga en la clase 951 00:37:00,659 --> 00:37:03,119 pues los tendremos que fijar con un setTest 952 00:37:03,119 --> 00:37:04,360 o con un constructor 953 00:37:04,360 --> 00:37:06,300 hemos hecho con un setTest porque era 954 00:37:06,300 --> 00:37:08,300 el método que habéis empezado a apuntar 955 00:37:08,300 --> 00:37:10,360 pero podría haber hecho un constructor 956 00:37:10,360 --> 00:37:13,139 en el que le pasáramos los tres valores 957 00:37:13,139 --> 00:37:14,539 y entonces ahora aquí en el main 958 00:37:14,539 --> 00:37:15,619 no tendría que hacer los set 959 00:37:15,619 --> 00:37:18,780 en el propio constructor se los paso los tres 960 00:37:18,780 --> 00:37:20,420 y ya está, y me ahorro las tres líneas de abajo 961 00:37:20,420 --> 00:37:21,639 ¿vale? 962 00:37:23,579 --> 00:37:24,480 sí, sí, pero 963 00:37:24,480 --> 00:37:26,179 lo que importa es que 964 00:37:26,179 --> 00:37:28,519 lo entendáis, ¿vale? podría haber 965 00:37:28,519 --> 00:37:29,679 hecho un constructor aquí 966 00:37:29,679 --> 00:37:31,260 con los tres parámetros 967 00:37:31,260 --> 00:37:38,500 a ver, tú estás empeñado en que haga eso 968 00:37:38,500 --> 00:37:40,199 a ver, venga, control shift 969 00:37:40,199 --> 00:37:44,400 no me ha funcionado 970 00:37:44,400 --> 00:37:47,900 alt shift s 971 00:37:47,900 --> 00:37:53,739 ah, ya sé por qué a mí no me gustan 972 00:37:53,739 --> 00:37:55,960 estos atajos, a ver 973 00:37:55,960 --> 00:37:57,719 porque yo tengo esta mano encajada al revés 974 00:37:57,719 --> 00:37:59,519 Entonces yo esta mano la puedo poner así 975 00:37:59,519 --> 00:38:02,400 Para ponerla así tengo que subir todo el brazo 976 00:38:02,400 --> 00:38:04,960 Entonces si a mí me dices que pulse dos teclas 977 00:38:04,960 --> 00:38:06,059 Con esta mano me has matado 978 00:38:06,059 --> 00:38:07,659 Porque no puedo, tendría que pulsarlas al revés 979 00:38:07,659 --> 00:38:10,179 Entonces debe ser por eso, me acabo de dar cuenta 980 00:38:10,179 --> 00:38:11,920 Por qué a mí no me gustan los atajos 981 00:38:11,920 --> 00:38:13,719 Porque normalmente necesitan que uses esta mano 982 00:38:13,719 --> 00:38:15,460 Va a ser por eso 983 00:38:15,460 --> 00:38:16,780 Dime 984 00:38:16,780 --> 00:38:17,599 ¿Puedo mostrarlo aquí? 985 00:38:17,980 --> 00:38:18,119 Sí 986 00:38:18,119 --> 00:38:27,849 ¿Cómo que nadie, todo el mundo ha entendido lo que ha pasado? 987 00:38:28,869 --> 00:38:29,369 De que era 988 00:38:29,369 --> 00:38:30,869 Y fue lo borrado 989 00:38:30,869 --> 00:38:33,590 Bueno, pues aquí lo tenéis 990 00:38:33,590 --> 00:38:35,590 A ver 991 00:38:35,590 --> 00:38:38,389 Yo lo escribo rápido porque entiendo que lo vais haciendo 992 00:38:38,389 --> 00:38:39,269 En paralelo vosotros 993 00:38:39,269 --> 00:38:40,710 Que no necesitáis ver lo que yo escribo 994 00:38:40,710 --> 00:38:42,789 Porque si yo os digo intercambiar un texto con el otro 995 00:38:42,789 --> 00:38:43,969 Es que ya me lo sabéis hacer 996 00:38:43,969 --> 00:38:45,230 No tenéis que ver lo que escribo yo 997 00:38:45,230 --> 00:38:49,360 ¿El cerebro? 998 00:38:49,599 --> 00:38:50,920 Porque se tiene muy mala solución 999 00:38:50,920 --> 00:38:58,559 Revisa llaves, revisa cositas 1000 00:38:58,559 --> 00:39:06,000 Vale, pues entonces 1001 00:39:06,000 --> 00:39:07,079 Todo esto de los atajos 1002 00:39:07,079 --> 00:39:09,440 Al final lo he hecho, fíjate por donde 1003 00:39:09,440 --> 00:39:10,760 A ver 1004 00:39:10,760 --> 00:39:12,659 Vamos a hacer el constructor 1005 00:39:12,659 --> 00:39:16,789 Vale, un constructor 1006 00:39:16,789 --> 00:39:19,829 Y ahora ya no necesito 1007 00:39:19,829 --> 00:39:21,690 Los sets, si no quiero 1008 00:39:21,690 --> 00:39:23,989 Podría pasárselos 1009 00:39:23,989 --> 00:39:25,730 Aquí, le puedo pasar 1010 00:39:25,730 --> 00:39:26,949 Aquí el texto 1011 00:39:26,949 --> 00:39:35,849 Saluda 1012 00:39:35,849 --> 00:39:38,570 Y despide 1013 00:39:38,570 --> 00:39:41,849 Espera, vamos a probar esto 1014 00:39:41,849 --> 00:39:45,230 Vale, si se lo paso por constructor 1015 00:39:45,230 --> 00:39:46,389 Pues me ahorro a hacer los sets 1016 00:39:46,389 --> 00:39:47,610 Pero bueno, la idea es la misma 1017 00:39:47,610 --> 00:39:51,010 La idea es que los necesita aquí arriba 1018 00:39:51,010 --> 00:39:52,309 ¿Vale? 1019 00:39:55,650 --> 00:39:56,429 Bueno, pues 1020 00:39:56,429 --> 00:39:58,789 todo esto, el manejar estas cosas 1021 00:39:58,789 --> 00:40:01,090 con cierta soltura, el ir entendiendo el paso de parámetros 1022 00:40:01,090 --> 00:40:03,110 es lo más 1023 00:40:03,110 --> 00:40:04,650 importante en programación 1024 00:40:04,650 --> 00:40:06,690 ¿vale? un segundín 1025 00:40:06,690 --> 00:40:08,650 vamos a ejecutar esto a ver si lo que hemos hecho 1026 00:40:08,650 --> 00:40:10,489 no tiene ningún error 1027 00:40:10,489 --> 00:40:16,159 esto no se va a ejecutar obviamente 1028 00:40:16,159 --> 00:40:21,840 vale, pues entonces aquí 1029 00:40:21,840 --> 00:40:25,900 efectivamente 1030 00:40:25,900 --> 00:40:27,300 Pues funciona el evento 1031 00:40:27,300 --> 00:40:28,400 Porque se van cambiando 1032 00:40:28,400 --> 00:40:30,840 Los textos 1033 00:40:30,840 --> 00:40:32,940 Y además 1034 00:40:32,940 --> 00:40:35,539 Me he puesto el mensajito correcto 1035 00:40:35,539 --> 00:40:38,619 Bueno, pues funciona correctamente 1036 00:40:38,619 --> 00:40:40,739 Problemas 1037 00:40:40,739 --> 00:40:43,219 Por ahora 1038 00:40:43,219 --> 00:40:43,820 Porque 1039 00:40:43,820 --> 00:40:46,460 Todavía seguimos 1040 00:40:46,460 --> 00:40:55,449 Cada componente, ¿te refieres a cada cosa? 1041 00:40:55,449 --> 00:40:56,570 Cada componente 1042 00:40:56,570 --> 00:40:59,110 Y luego el texto del botón es 1043 00:40:59,110 --> 00:41:01,909 claro, sí, pero no os preocupéis 1044 00:41:01,909 --> 00:41:03,909 que vamos a incorporar 1045 00:41:03,909 --> 00:41:05,050 un truco rápidamente 1046 00:41:05,050 --> 00:41:07,869 pero, bueno, vamos a descansar 1047 00:41:07,869 --> 00:41:08,349 dos minutos 1048 00:41:08,349 --> 00:41:11,550 por favor, pro