1 00:00:00,300 --> 00:00:02,680 aquí en lo que estábamos ahora es que 2 00:00:02,680 --> 00:00:04,820 bueno, la estructura de la aplicación ya está 3 00:00:04,820 --> 00:00:06,780 esto ya es una aplicación que funciona y hace cosas 4 00:00:06,780 --> 00:00:07,259 pero hombre 5 00:00:07,259 --> 00:00:10,839 no queremos que haga esto, esto no es lo que queremos que haga 6 00:00:10,839 --> 00:00:12,800 lo que queremos 7 00:00:12,800 --> 00:00:14,880 que haga esta aplicación cuando yo le doy 8 00:00:14,880 --> 00:00:18,019 al botón es 9 00:00:18,019 --> 00:00:24,000 leer lo que hay en este 10 00:00:24,000 --> 00:00:25,940 texto, que habrá algún 11 00:00:25,940 --> 00:00:28,079 método, este componente 12 00:00:28,079 --> 00:00:29,960 takes fill tendrá algún método para devolverme 13 00:00:29,960 --> 00:00:31,780 lo que hay dentro, recordad que cada 14 00:00:31,780 --> 00:00:33,939 componente de swing tiene tropecientos 15 00:00:33,939 --> 00:00:35,780 mil métodos para hacer lo que yo 16 00:00:35,780 --> 00:00:37,880 quiera hacer con él, pues si este área 17 00:00:37,880 --> 00:00:39,740 de texto es para meter cosas, algún 18 00:00:39,740 --> 00:00:41,719 método tendrá que me devuelva lo que hay 19 00:00:41,719 --> 00:00:42,420 dentro, claro 20 00:00:42,420 --> 00:00:45,719 cuando ya tengo eso que está dentro 21 00:00:45,719 --> 00:00:46,380 operar 22 00:00:46,380 --> 00:00:49,280 cuando ya he operado 23 00:00:49,280 --> 00:00:51,820 generar el resultado y 24 00:00:51,820 --> 00:00:53,780 ponérselo como texto 25 00:00:53,780 --> 00:00:55,780 a esta etiqueta, la etiqueta 26 00:00:55,780 --> 00:00:57,679 tendrá algún método para cambiar el texto 27 00:00:57,679 --> 00:00:59,780 tendrá métodos para hacer mil cosas, una de ellas 28 00:00:59,780 --> 00:01:01,479 para cambiar el texto, pues todo eso 29 00:01:01,479 --> 00:01:03,659 es lo que yo quiero hacer 30 00:01:03,659 --> 00:01:05,420 todas esas sentencias que he dicho 31 00:01:05,420 --> 00:01:07,840 son las que yo quiero 32 00:01:07,840 --> 00:01:08,599 meter aquí dentro 33 00:01:08,599 --> 00:01:12,099 en lugar de estas, esto no quiero meterlo 34 00:01:12,099 --> 00:01:15,260 vale, pues entonces 35 00:01:15,260 --> 00:01:17,400 lo primero que tendremos que hacer aquí es 36 00:01:17,400 --> 00:01:19,459 hemos dicho, coger el texto que hay en el área 37 00:01:19,459 --> 00:01:21,400 de texto, eso es lo primero 38 00:01:21,400 --> 00:01:30,799 que necesitamos hacer, vale 39 00:01:30,799 --> 00:01:32,299 coger el texto del área de texto 40 00:01:32,299 --> 00:01:34,700 pues ya tenemos el primer problemón, ¿no? 41 00:01:35,840 --> 00:01:36,840 que el área de texto 42 00:01:36,840 --> 00:01:37,340 ¿dónde está? 43 00:01:38,340 --> 00:01:40,299 el área de texto es una variable 44 00:01:40,299 --> 00:01:42,659 local del constructor 45 00:01:42,659 --> 00:01:44,620 luego ya está 46 00:01:44,620 --> 00:01:46,239 ya 47 00:01:46,239 --> 00:01:48,719 nos hemos encontrado el primer problema 48 00:01:48,719 --> 00:01:50,620 ¿cómo voy a llegar 49 00:01:50,620 --> 00:01:51,739 yo aquí al área de texto? 50 00:01:52,400 --> 00:01:54,040 o sea, si yo consigue el área de texto 51 00:01:54,040 --> 00:01:56,019 algún método tendrá para coger el 52 00:01:56,019 --> 00:01:57,739 contenido, pero es que 53 00:01:57,739 --> 00:02:00,219 esto ya es un problema de programación 54 00:02:00,219 --> 00:02:01,180 el que os planteo 55 00:02:01,180 --> 00:02:03,680 esta variable 56 00:02:03,680 --> 00:02:07,840 mi jtextfield dato 57 00:02:07,840 --> 00:02:09,360 que es a la que yo quiero acceder 58 00:02:09,360 --> 00:02:11,439 dato efectivamente 59 00:02:11,439 --> 00:02:12,379 si yo me pongo 60 00:02:12,379 --> 00:02:27,599 dato efectivamente pues 61 00:02:27,599 --> 00:02:29,800 tiene un 62 00:02:29,800 --> 00:02:32,629 método 63 00:02:32,629 --> 00:02:35,009 estupendo, getText 64 00:02:35,009 --> 00:02:36,889 que si yo leo la ayuda, te dice 65 00:02:36,889 --> 00:02:38,969 te devuelve el texto que está dentro del 66 00:02:38,969 --> 00:02:40,830 componente, ah genial 67 00:02:40,830 --> 00:02:42,909 este es el método 68 00:02:42,909 --> 00:02:44,930 que yo quiero, vale 69 00:02:44,930 --> 00:02:46,590 esta parte la tengo resuelta 70 00:02:46,590 --> 00:02:49,110 pero ostras, el problema 71 00:02:49,110 --> 00:02:49,990 que tengo es que 72 00:02:49,990 --> 00:02:56,409 esta variable dato, esta variable es una variable local 73 00:02:56,409 --> 00:02:59,490 a este método, a este bloque 74 00:02:59,490 --> 00:03:04,590 luego como bien sabemos, una variable solo es visible, accesible 75 00:03:04,590 --> 00:03:07,550 dentro del bloque en el que está declarada 76 00:03:07,550 --> 00:03:11,969 luego esto solo es visible y accesible dentro de este bloque 77 00:03:11,969 --> 00:03:15,330 ¿vale? luego 78 00:03:15,330 --> 00:03:18,310 aquí, dato 79 00:03:18,310 --> 00:03:20,969 Que yo querría hacer esto 80 00:03:20,969 --> 00:03:24,090 Pues dato no puedo 81 00:03:24,090 --> 00:03:26,330 Yo querría esto, ¿no? 82 00:03:30,120 --> 00:03:31,300 Yo querría esto 83 00:03:31,300 --> 00:03:32,639 Pero dato no es visible 84 00:03:32,639 --> 00:03:33,680 ¿Vale? 85 00:03:34,539 --> 00:03:37,060 Bueno, pues ¿qué arreglos, qué apaños podemos hacer? 86 00:03:38,780 --> 00:03:41,360 ¿Qué cosas se os van ocurriendo que podamos hacer? 87 00:03:42,699 --> 00:03:44,780 Hay desde la opción más sencilla y más patatera 88 00:03:44,780 --> 00:03:47,620 Hacia la que es ya más sofisticada 89 00:03:47,620 --> 00:03:48,560 Y que es la que se hace 90 00:03:48,560 --> 00:03:51,580 Que es la que tenemos que aprender 91 00:03:51,580 --> 00:03:54,599 Pero la primera que se os ocurriría con lo que sabéis 92 00:03:54,599 --> 00:04:00,099 Hombre, lo primero que se os ocurriría es 93 00:04:00,099 --> 00:04:04,889 ¿Qué es lo primero que se os ocurriría? 94 00:04:04,969 --> 00:04:05,810 Así de buenas a primeras 95 00:04:05,810 --> 00:04:08,349 ¿Cómo que importa? 96 00:04:08,430 --> 00:04:09,129 ¿Importar es importante? 97 00:04:11,250 --> 00:04:12,469 Habría que sacarla afuera 98 00:04:12,469 --> 00:04:13,270 Eso para empezar 99 00:04:13,270 --> 00:04:14,750 Habría que sacarla afuera 100 00:04:14,750 --> 00:04:16,449 ¿No? 101 00:04:17,370 --> 00:04:19,490 Vale, pero sacándola afuera, ¿qué solucionamos? 102 00:04:20,930 --> 00:04:21,689 Sacándola afuera 103 00:04:21,689 --> 00:04:23,730 Ahora es una variable 104 00:04:23,730 --> 00:04:24,170 ¿Eh? 105 00:04:26,329 --> 00:04:27,449 Pero podéis llamarla como 106 00:04:27,449 --> 00:04:29,009 Imagínate que yo hará JTextField 107 00:04:29,009 --> 00:04:30,970 Vamos a, en lugar de declararla aquí 108 00:04:30,970 --> 00:04:32,990 Yo aquí la 109 00:04:32,990 --> 00:04:35,069 Puedo instanciar y hacer todo lo que sea 110 00:04:35,069 --> 00:04:36,930 Pero la declaro aquí 111 00:04:36,930 --> 00:04:41,060 Ahí 112 00:04:41,060 --> 00:04:47,389 JTextField 113 00:04:47,389 --> 00:04:49,829 Dato 114 00:04:49,829 --> 00:04:52,750 Está ya declarada afuera, ya es una propiedad 115 00:04:52,750 --> 00:04:53,370 De la clase 116 00:04:53,370 --> 00:04:55,569 Luego sí, luego ya está 117 00:04:55,569 --> 00:04:58,970 Aquí está construida, añadida al panel 118 00:04:58,970 --> 00:04:59,689 Eso es lo de menos 119 00:04:59,689 --> 00:05:02,730 Pero donde está declarada, marca su visibilidad 120 00:05:02,730 --> 00:05:03,769 Está declarada afuera 121 00:05:03,769 --> 00:05:08,819 ahora mismo que ha arreglado 122 00:05:08,819 --> 00:05:10,500 no ha arreglado nada 123 00:05:10,500 --> 00:05:11,300 o sea dato aquí 124 00:05:11,300 --> 00:05:15,389 poniendo la static 125 00:05:15,389 --> 00:05:17,750 ahora ya si tendría más 126 00:05:17,750 --> 00:05:20,290 si yo la pongo static 127 00:05:20,290 --> 00:05:25,509 que más tendría que cambiar aquí 128 00:05:25,509 --> 00:05:27,829 para poder acceder a ella 129 00:05:27,829 --> 00:05:32,509 claro tendría que poner el nombre de la clase 130 00:05:32,509 --> 00:05:49,620 ventana 131 00:05:49,620 --> 00:05:51,160 disiesto 132 00:05:51,160 --> 00:05:58,560 vale 133 00:05:58,560 --> 00:06:03,810 hacerle public porque está en paquete 134 00:06:03,810 --> 00:06:05,730 diferente, ¿no? como lo he puesto 135 00:06:05,730 --> 00:06:07,850 en paquete diferente, en mi caso, no sé en el vuestro 136 00:06:07,850 --> 00:06:11,569 vale, bueno, a ver 137 00:06:11,569 --> 00:06:13,529 así un apaño 138 00:06:13,529 --> 00:06:14,149 tengo hecho 139 00:06:14,149 --> 00:06:16,850 pero tengo que hacer, sacar 140 00:06:16,850 --> 00:06:19,189 todos los componentes que me interesen fuera 141 00:06:19,189 --> 00:06:21,230 hacerlos 142 00:06:21,230 --> 00:06:23,470 estáticos y públicos 143 00:06:23,470 --> 00:06:25,269 entonces, hombre, a ver, hacerlos 144 00:06:25,269 --> 00:06:27,209 estáticos, hacer una variable estática 145 00:06:27,209 --> 00:06:29,509 cuidado, puede tener sus implicaciones 146 00:06:29,509 --> 00:06:31,449 en este caso, con lo sencilla que es mi aplicación 147 00:06:31,449 --> 00:06:33,389 no, ya sabéis la implicación 148 00:06:33,389 --> 00:06:34,629 que tiene hacer una variable estática 149 00:06:34,629 --> 00:06:37,750 es que ahora cualquier instancia 150 00:06:37,750 --> 00:06:39,589 que yo haga de esta misma clase 151 00:06:39,589 --> 00:06:40,810 cualquier instancia 152 00:06:40,810 --> 00:06:43,430 ya va a compartir 153 00:06:43,430 --> 00:06:45,129 esa variable, entonces las variables 154 00:06:45,129 --> 00:06:47,610 estáticas, cuidado, son variables compartidas 155 00:06:47,610 --> 00:06:49,389 por todas las instancias de una clase 156 00:06:49,389 --> 00:06:51,490 luego los efectos secundarios 157 00:06:51,490 --> 00:06:53,850 pueden ser brutales, yo modifico 158 00:06:53,850 --> 00:06:55,129 en una clase 159 00:06:55,129 --> 00:06:57,449 y la 160 00:06:57,449 --> 00:06:59,569 modificación se ve en todas las demás 161 00:06:59,569 --> 00:07:01,790 porque es compartida, en este caso 162 00:07:01,790 --> 00:07:03,730 si yo tuviera varias instancias 163 00:07:03,730 --> 00:07:04,870 de ventana bisiesto 164 00:07:04,870 --> 00:07:07,149 y cambiara text fill en una 165 00:07:07,149 --> 00:07:09,730 el text fill me cambiaría en todas las demás automáticamente 166 00:07:09,730 --> 00:07:10,490 me cambiaría en todas 167 00:07:10,490 --> 00:07:14,750 imaginaos que le cambio el color 168 00:07:14,750 --> 00:07:17,569 a este objeto ventana, le cambio el color 169 00:07:17,569 --> 00:07:19,149 el color me cambia en todas las demás 170 00:07:19,149 --> 00:07:21,509 me ha cambiado en todas, porque es estática 171 00:07:21,509 --> 00:07:22,850 ahora mismo aquí solo tengo una ventana 172 00:07:22,850 --> 00:07:25,290 entonces bueno, no habría problema 173 00:07:25,290 --> 00:07:27,589 pero en general, cuidado, las variables 174 00:07:27,589 --> 00:07:29,750 static se usan de forma 175 00:07:29,750 --> 00:07:30,550 muy medida 176 00:07:30,550 --> 00:07:32,509 y en los contextos 177 00:07:32,509 --> 00:07:34,430 no normalmente para solucionar un problema 178 00:07:34,430 --> 00:07:36,470 de acceso, cuando tengo que solucionar un problema 179 00:07:36,470 --> 00:07:38,290 de acceso me busco otra forma más segura 180 00:07:38,290 --> 00:07:39,050 ahora veremos cómo 181 00:07:39,050 --> 00:07:42,269 las variables static se hacen cuando lo que 182 00:07:42,269 --> 00:07:43,589 representan es esa idea 183 00:07:43,589 --> 00:07:45,889 que es la idea de algo compartido 184 00:07:45,889 --> 00:07:48,430 la idea de algo global 185 00:07:48,430 --> 00:07:50,449 cuando le dan la idea de algo global, sí 186 00:07:50,449 --> 00:07:52,829 pero es que ese text field 187 00:07:52,829 --> 00:07:54,550 él por definición 188 00:07:54,550 --> 00:07:55,709 no es una cosa global 189 00:07:55,709 --> 00:07:57,810 él es un text field que está en una ventana 190 00:07:57,810 --> 00:07:59,209 que está en una ventana 191 00:07:59,209 --> 00:08:01,290 luego, conceptualmente no es global 192 00:08:01,290 --> 00:08:02,610 que solo tengo una 193 00:08:02,610 --> 00:08:05,129 no pasa nada porque sea global, porque solo tengo una 194 00:08:05,129 --> 00:08:07,389 pero yo tengo muchas que pasan 195 00:08:07,389 --> 00:08:07,649 ¿vale? 196 00:08:08,889 --> 00:08:11,250 entonces, bueno, efectivamente 197 00:08:11,250 --> 00:08:12,889 con esto soluciona el problema de acceso 198 00:08:12,889 --> 00:08:15,389 pero importante, importante que hagamos los diseños 199 00:08:15,389 --> 00:08:17,069 de manera que respondan a lo que 200 00:08:17,069 --> 00:08:18,629 conceptualmente son las cosas 201 00:08:18,629 --> 00:08:21,230 y aquí, este área de texto 202 00:08:21,230 --> 00:08:23,449 no es una variable global a todas mis ventanas 203 00:08:23,449 --> 00:08:25,370 esta variable texto 204 00:08:25,370 --> 00:08:27,170 es un texto de ese objeto 205 00:08:27,170 --> 00:08:29,230 ventana, vale, entonces bueno 206 00:08:29,230 --> 00:08:31,050 vamos a optar por otras soluciones, vale 207 00:08:31,050 --> 00:08:33,250 dentro de que esta es la que, bueno, la que yo 208 00:08:33,250 --> 00:08:34,029 esperaba que 209 00:08:34,029 --> 00:08:37,610 os surgiera 210 00:08:37,610 --> 00:08:37,909 claro 211 00:08:37,909 --> 00:08:41,169 vale, pues entonces yo no puedo acceder aquí 212 00:08:41,169 --> 00:08:42,929 a dato, no puedo acceder a dato 213 00:08:42,929 --> 00:08:44,750 porque no lo tengo 214 00:08:44,750 --> 00:08:47,029 me lo estáis diciendo, no lo tienes, entonces jo, sería 215 00:08:47,029 --> 00:08:49,649 magnífico, sería magnífico 216 00:08:49,649 --> 00:08:51,210 si yo tuviera esto 217 00:08:51,210 --> 00:08:52,669 como propiedad de mi clase 218 00:08:52,669 --> 00:08:59,100 fuera una propiedad de mi clase 219 00:08:59,100 --> 00:09:03,720 y entonces yo podría acceder a ella 220 00:09:03,720 --> 00:09:06,120 ¿vale? imaginaos que 221 00:09:06,120 --> 00:09:07,480 dato es una propiedad de mi clase 222 00:09:07,480 --> 00:09:10,120 entonces yo puedo acceder a ella, está claro, es una propiedad de mi clase 223 00:09:10,120 --> 00:09:11,580 esta es una clase que estoy haciendo yo 224 00:09:11,580 --> 00:09:13,320 puedo añadirle lo que me dé la gana 225 00:09:13,320 --> 00:09:16,080 que implemente Action Leaser 226 00:09:16,080 --> 00:09:17,759 no significa que yo no pueda añadir lo que quiera 227 00:09:17,759 --> 00:09:19,759 significa simplemente que es capaz de escuchar 228 00:09:19,759 --> 00:09:21,960 ¿vale? pues si dato es una propiedad 229 00:09:21,960 --> 00:09:23,759 de mi clase, magnífico, puedo acceder 230 00:09:23,759 --> 00:09:25,519 pero claro, este dato 231 00:09:25,519 --> 00:09:27,639 ¿con qué valor se tiene que rellenar? 232 00:09:28,240 --> 00:09:29,720 se tiene que rellenar 233 00:09:29,720 --> 00:09:31,059 con el text field de la otra 234 00:09:31,059 --> 00:09:33,799 vale, pero es que entonces 235 00:09:33,799 --> 00:09:35,200 yo aquí no le he puesto constructor 236 00:09:35,200 --> 00:09:37,799 porque no he querido, pues voy a hacerle un constructor 237 00:09:37,799 --> 00:09:39,419 que reciba como parámetro 238 00:09:39,419 --> 00:09:40,919 el text field de la otra 239 00:09:40,919 --> 00:09:43,240 y lo inicia 240 00:09:43,240 --> 00:09:44,820 y inicialice este dato con eso 241 00:09:44,820 --> 00:09:47,500 y queda una estructura de programación 242 00:09:47,500 --> 00:09:53,379 más bonita, algo a lo que 243 00:09:53,379 --> 00:09:55,480 recurrimos siempre, cuando yo no tengo 244 00:09:55,480 --> 00:09:57,120 acceso a algo, lo paso por parámetro 245 00:09:57,120 --> 00:09:59,460 es algo que estamos resolviendo siempre 246 00:09:59,460 --> 00:10:01,440 cuando mi aplicación trabaja con un map 247 00:10:01,440 --> 00:10:03,279 mi método no lo tiene 248 00:10:03,279 --> 00:10:05,080 se lo paso por parámetro 249 00:10:05,080 --> 00:10:06,879 pues aquí igual 250 00:10:06,879 --> 00:10:10,039 hago un constructor al que yo le paso 251 00:10:10,039 --> 00:10:10,799 por parámetro 252 00:10:10,799 --> 00:10:13,940 un text fill 253 00:10:13,940 --> 00:10:17,720 le paso por parámetro un text fill 254 00:10:17,720 --> 00:10:19,539 y uso ese text fill 255 00:10:19,539 --> 00:10:20,860 que he pasado por parámetro 256 00:10:20,860 --> 00:10:22,159 para inicializar 257 00:10:22,159 --> 00:10:24,580 esta variable 258 00:10:24,580 --> 00:10:27,279 ¿vale? y ahora yo ya trabajo con esta 259 00:10:27,279 --> 00:10:29,340 sin ningún problema, trabajo con esta 260 00:10:29,340 --> 00:10:31,139 ¿pero qué ocurre? 261 00:10:31,899 --> 00:10:33,679 esto public, claro que no me puede instanciar 262 00:10:33,679 --> 00:10:34,120 desde fuera 263 00:10:34,120 --> 00:10:36,519 pues que ahora cuando haga captura 264 00:10:36,519 --> 00:10:38,460 botón, le tengo que pasar el text field 265 00:10:38,460 --> 00:10:40,059 con el que yo quiero que trabaje 266 00:10:40,059 --> 00:10:41,840 con el que yo quiero que trabaje 267 00:10:41,840 --> 00:10:44,000 ¿y en qué momento he instanciado captura 268 00:10:44,000 --> 00:10:45,679 pulsar botón? aquí abajo 269 00:10:45,679 --> 00:10:53,350 esto me aparece de que 270 00:10:53,350 --> 00:10:56,309 lo había declarado arriba y ya lo he quitado 271 00:10:56,309 --> 00:11:00,110 ahí, sí, el static lo he quitado 272 00:11:00,110 --> 00:11:01,549 ya, vale 273 00:11:01,549 --> 00:11:04,350 y ahora, ¿dónde me aparece el error? 274 00:11:04,570 --> 00:11:05,950 en el constructor que lo he cambiado 275 00:11:05,950 --> 00:11:08,090 me dice, oye, que el constructor de captura 276 00:11:08,090 --> 00:11:10,149 pulsar botón, el constructor, tienes que pasarle 277 00:11:10,149 --> 00:11:12,169 el text fill, este, para que 278 00:11:12,169 --> 00:11:14,190 lo use para inicializar su variable interna 279 00:11:14,190 --> 00:11:15,250 y ya trabaje con ella 280 00:11:15,250 --> 00:11:18,269 cuidado que ya tienes que pasar, ah, claro, perfecto 281 00:11:18,269 --> 00:11:19,529 voy a pasarte 282 00:11:19,529 --> 00:11:21,789 el text fill con el que quiero que trabajes 283 00:11:21,789 --> 00:11:24,149 con este, fue, con este 284 00:11:24,149 --> 00:11:24,409 text 285 00:11:24,409 --> 00:11:27,950 pues venga, ala, magnífico 286 00:11:27,950 --> 00:11:29,309 ya está 287 00:11:29,309 --> 00:11:32,009 ya hemos solucionado el problema 288 00:11:32,009 --> 00:11:34,029 del acceso a variables de la manera habitual 289 00:11:34,029 --> 00:11:37,210 Mi método tiene que trabajar con algo 290 00:11:37,210 --> 00:11:39,629 Pásaselo por parámetro 291 00:11:39,629 --> 00:11:40,769 Y ya está 292 00:11:40,769 --> 00:11:42,610 Pásaselo por parámetro y ya trabaja con él 293 00:11:42,610 --> 00:11:45,870 Pues nada, se lo pasamos por parámetro 294 00:11:45,870 --> 00:11:47,889 Inicializa la variable interna 295 00:11:47,889 --> 00:11:48,870 Y ya trabaja con él 296 00:11:48,870 --> 00:11:49,690 Para coger el año 297 00:11:49,690 --> 00:11:51,830 Vale 298 00:11:51,830 --> 00:11:54,629 Pues ahora, el text field ya lo tenemos 299 00:11:54,629 --> 00:11:57,269 Para ver si esto no había 300 00:11:57,269 --> 00:11:58,389 Un método que era de time 301 00:11:58,389 --> 00:12:02,169 Que lo habías encontrado tú 302 00:12:02,169 --> 00:12:03,789 Esto era, ¿cómo se llamaba el método? 303 00:12:04,029 --> 00:12:05,269 ¿Por qué letra empezaba? 304 00:12:05,549 --> 00:12:07,730 Ah, no, la 305 00:12:07,730 --> 00:12:11,470 Ah, que la dejaba Time 306 00:12:11,470 --> 00:12:12,809 Me he liado yo con la clase, sí 307 00:12:12,809 --> 00:12:14,950 gr.is 308 00:12:14,950 --> 00:12:16,429 No, isLib 309 00:12:16,429 --> 00:12:19,590 Vale, pues entonces 310 00:12:19,590 --> 00:12:21,009 Yo le tengo que pasar este año 311 00:12:21,009 --> 00:12:23,269 Pero este año está en string pasado entero 312 00:12:23,269 --> 00:12:25,029 Pero bueno, el pasar entero 313 00:12:25,029 --> 00:12:26,690 Lo hemos hecho muchas veces 314 00:12:26,690 --> 00:12:29,750 Ya sabemos que hago esto 315 00:12:29,750 --> 00:12:30,330 Y ya está 316 00:12:30,330 --> 00:12:32,629 Y ahora 317 00:12:32,629 --> 00:12:35,149 Este es un boolean que me dice si es vis y esto no 318 00:12:35,149 --> 00:12:37,250 entonces 319 00:12:37,250 --> 00:12:40,190 si es bisiesto 320 00:12:40,190 --> 00:12:42,230 hago lo que tenga que hacer 321 00:12:42,230 --> 00:12:43,649 ahora veremos a ver el que hago 322 00:12:43,649 --> 00:12:45,769 y si no lo es 323 00:12:45,769 --> 00:12:47,750 hago lo otro que tenga que hacer 324 00:12:47,750 --> 00:12:50,629 claro, y ahora viene otra vez el problema 325 00:12:50,629 --> 00:12:52,230 ¿qué es lo que tengo que hacer si es bisiesto? 326 00:12:52,850 --> 00:12:55,029 pues coger la etiqueta para el resultado 327 00:12:55,029 --> 00:12:55,889 que es esta 328 00:12:55,889 --> 00:12:57,509 la etiqueta result 329 00:12:57,509 --> 00:12:59,669 y fijarle el texto que yo quiera 330 00:12:59,669 --> 00:13:00,789 que tendrá un método para ello 331 00:13:00,789 --> 00:13:04,009 de nuevo me pasa que no tengo aquí la etiqueta 332 00:13:04,009 --> 00:13:06,330 no pasa nada, se la paso por parámetro 333 00:13:06,330 --> 00:13:08,889 me preparo una variable de clase 334 00:13:08,889 --> 00:13:09,570 para ella 335 00:13:09,570 --> 00:13:12,769 me preparo una variable de clase 336 00:13:12,769 --> 00:13:18,460 y se la paso 337 00:13:18,460 --> 00:13:19,179 por parámetro 338 00:13:19,179 --> 00:13:37,889 pues de nuevo, ya tengo 339 00:13:37,889 --> 00:13:39,409 las dos variables que necesitaba 340 00:13:39,409 --> 00:13:41,950 que las paso por parámetro y las inicializo 341 00:13:41,950 --> 00:13:43,809 pero claro, en el constructor 342 00:13:43,809 --> 00:13:44,509 otra vez 343 00:13:44,509 --> 00:13:48,029 entonces ahora ya al constructor 344 00:13:48,029 --> 00:13:49,029 le tendré que pasar 345 00:13:49,029 --> 00:13:52,070 el text fill y la etiqueta 346 00:13:52,070 --> 00:13:56,309 la etiqueta esta 347 00:13:56,309 --> 00:13:58,210 le tendré que pasar esta 348 00:13:58,210 --> 00:14:00,149 para que trabaje con ella 349 00:14:00,149 --> 00:14:02,710 pues hala 350 00:14:02,710 --> 00:14:05,289 ahora ya puede trabajar con la etiqueta 351 00:14:05,289 --> 00:14:07,330 y que tiene que hacer con esa etiqueta 352 00:14:07,330 --> 00:14:09,149 pues con esa etiqueta 353 00:14:09,149 --> 00:14:10,850 tiene que fijarle un texto 354 00:14:10,850 --> 00:14:12,830 que métodos tiene 355 00:14:12,830 --> 00:14:15,210 si uno busca por aquí, anda, si tiene un método 356 00:14:15,210 --> 00:14:17,169 set test, pues tiene la pinta que el método 357 00:14:17,169 --> 00:14:19,049 set test es el que le pone el texto, no es cuestión de 358 00:14:19,049 --> 00:14:20,230 investigar los métodos 359 00:14:20,230 --> 00:14:22,889 que texto queremos poner si es vici esto 360 00:14:22,889 --> 00:14:25,570 No es bisiesto. 361 00:14:28,100 --> 00:14:28,820 ¿Que no? 362 00:14:29,779 --> 00:14:31,279 Pues queremos ponerle el otro. 363 00:14:43,240 --> 00:14:46,340 No es bisiesto. 364 00:14:49,399 --> 00:14:49,620 ¡Hala! 365 00:14:50,460 --> 00:14:52,759 Ahora ya sí que está terminada la aplicación. 366 00:14:53,120 --> 00:14:54,159 A menos que hayamos hecho algo mal. 367 00:14:55,080 --> 00:14:56,539 Ahora ya, el problema del método. 368 00:14:56,919 --> 00:14:59,139 Que necesitaba el text field, necesitaba la etiqueta resultado. 369 00:14:59,419 --> 00:15:00,279 Para operar con ella. 370 00:15:00,399 --> 00:15:01,960 Escoger el año y mostrar el texto. 371 00:15:02,500 --> 00:15:03,960 No las tiene porque son variables locales. 372 00:15:03,960 --> 00:15:10,159 locales. Pues creamos aquí dos variables de clase a las que sí tiene acceso, obviamente, 373 00:15:10,440 --> 00:15:18,360 porque son variables de su clase, y las inicializamos a través del constructor. Cuando instanciamos 374 00:15:18,360 --> 00:15:24,860 el objeto, le pasamos los dos componentes con los que tiene que operar. Tienes que operar 375 00:15:24,860 --> 00:15:30,740 con esos dos. Vale, estupendo. Pues ahora ya este, estos dos componentes, operar con 376 00:15:30,740 --> 00:15:37,740 Y ahora ya esta aplicación 377 00:15:37,740 --> 00:15:39,500 Uy, claro, es que no le he puesto el año 378 00:15:39,500 --> 00:15:41,000 Entonces me hace al cojero 379 00:15:41,000 --> 00:15:43,740 Hacer el integer parse in del vacío 380 00:15:43,740 --> 00:15:45,500 Vale, siguiente intento 381 00:15:46,480 --> 00:15:47,840 Voy a poner 382 00:15:47,840 --> 00:15:49,279 El 1987 383 00:15:49,279 --> 00:15:51,360 Es bisiesto 384 00:15:51,360 --> 00:15:53,200 Pues ese no lo era, obviamente 385 00:15:53,200 --> 00:15:55,399 El 2024 386 00:15:55,399 --> 00:15:58,600 Ese sí 387 00:15:58,600 --> 00:16:00,200 Vale 388 00:16:00,200 --> 00:16:08,559 Pues ya está, pues esta es la arquitectura básica 389 00:16:08,559 --> 00:16:10,659 Sobre esta arquitectura básica 390 00:16:10,659 --> 00:16:12,399 ya se puede hacer cualquier cosa 391 00:16:12,399 --> 00:16:15,039 pero claro, hay millones de pequeñas 392 00:16:15,039 --> 00:16:16,700 cosas, millones de pequeñas cosas 393 00:16:16,700 --> 00:16:18,220 que 394 00:16:18,220 --> 00:16:20,100 amplían esto 395 00:16:20,100 --> 00:16:22,639 y que cada una de ellas, luego cuando uno se mete 396 00:16:22,639 --> 00:16:25,019 pues claro, tienes que resolver un montón de pequeñas cuestiones 397 00:16:25,019 --> 00:16:26,659 y para resolver 398 00:16:26,659 --> 00:16:28,340 esas pequeñas cuestiones que surgen 399 00:16:28,340 --> 00:16:30,000 hay que saber programar 400 00:16:30,000 --> 00:16:32,679 no vale con saber consultar bien Youtube 401 00:16:32,679 --> 00:16:34,940 chat GPT, Stack Overflow, no vale 402 00:16:34,940 --> 00:16:36,100 ¿vale? 403 00:16:36,100 --> 00:16:37,980 todo eso es una ayuda maravillosa 404 00:16:37,980 --> 00:16:38,820 para hacer las cosas 405 00:16:38,820 --> 00:16:40,659 pero el que no sabe 406 00:16:40,659 --> 00:16:42,960 programar no puede hacer 407 00:16:42,960 --> 00:16:44,080 absolutamente nada más 408 00:16:44,080 --> 00:16:46,820 a lo mejor puede engañar a alguien un mes 409 00:16:46,820 --> 00:16:48,220 pero dos meses de verdad que no 410 00:16:48,220 --> 00:16:51,000 es importante que aprendáis a programar 411 00:16:51,000 --> 00:16:54,480 vale, bueno pues 412 00:16:54,480 --> 00:16:57,000 aquí se me ha abierto 413 00:16:57,000 --> 00:16:58,059 esto por la excepción 414 00:16:58,059 --> 00:17:02,139 vale 415 00:17:02,139 --> 00:17:04,220 entonces aquí la solución que hemos dado 416 00:17:04,220 --> 00:17:05,759 para poder acceder a eso es esta 417 00:17:05,759 --> 00:17:07,980 aunque la habitual será otra 418 00:17:07,980 --> 00:17:10,019 que bueno, que no la voy a meter ahora porque es ya 419 00:17:10,019 --> 00:17:11,400 demasiado rollo, no nos da tiempo 420 00:17:11,400 --> 00:17:13,480 el próximo día y ahora simplemente 421 00:17:13,480 --> 00:17:15,240 en el 422 00:17:15,240 --> 00:17:18,200 en el tiempo que os queda 423 00:17:18,200 --> 00:17:20,039 para ver que todo esto está entendido 424 00:17:20,039 --> 00:17:21,759 pues algo muy parecido 425 00:17:21,759 --> 00:17:23,839 algo muy parecido pero más 426 00:17:23,839 --> 00:17:28,990 vale 427 00:17:28,990 --> 00:17:31,170 pues una aplicación 428 00:17:31,170 --> 00:17:33,789 dos áreas de texto, una otra 429 00:17:33,789 --> 00:17:35,690 y aquí un botoncito 430 00:17:35,690 --> 00:17:37,509 con un más delante, pues nada, aún más 431 00:17:37,509 --> 00:17:39,569 un por lo que os dé la gana, cuando le deis 432 00:17:39,569 --> 00:17:41,890 al botoncito que haga la operación 433 00:17:41,890 --> 00:17:43,490 que le hayáis puesto y muestra aquí 434 00:17:43,490 --> 00:17:45,470 pues la suma 435 00:17:45,470 --> 00:17:47,009 que aquí en el bot 436 00:17:47,009 --> 00:17:47,849 habéis puesto multiplicar 437 00:17:47,849 --> 00:17:48,369 lo que queráis 438 00:17:48,369 --> 00:17:48,869 me da igual 439 00:17:48,869 --> 00:17:49,890 ¿vale? 440 00:17:49,910 --> 00:17:50,809 la aplicación tiene 441 00:17:50,809 --> 00:17:51,710 dos áreas de texto 442 00:17:51,710 --> 00:17:52,829 metéis dos datos 443 00:17:52,829 --> 00:17:54,069 y cuando se da el botón 444 00:17:54,069 --> 00:17:55,269 muestra el resultado 445 00:17:55,269 --> 00:17:56,730 de la operación 446 00:17:56,730 --> 00:17:57,390 con recorriente 447 00:17:57,390 --> 00:17:57,650 ¿vale? 448 00:17:58,029 --> 00:17:58,170 ¿eh? 449 00:17:59,849 --> 00:18:00,109 la 450 00:18:00,109 --> 00:18:01,089 bueno a ver 451 00:18:01,089 --> 00:18:02,130 yo lo estoy dibujando así 452 00:18:02,130 --> 00:18:03,450 pero como solamente 453 00:18:03,450 --> 00:18:03,829 hemos puesto 454 00:18:03,829 --> 00:18:04,509 gestor de ubicación 455 00:18:04,509 --> 00:18:05,089 flow layout 456 00:18:05,089 --> 00:18:05,990 pues los puntos 457 00:18:05,990 --> 00:18:06,809 van a quedar seguidos 458 00:18:06,809 --> 00:18:08,170 a ver si ajustáis 459 00:18:08,170 --> 00:18:10,190 los tamaños 460 00:18:10,190 --> 00:18:11,309 con el flow layout 461 00:18:11,309 --> 00:18:12,730 él nos va a poner 462 00:18:12,730 --> 00:18:14,950 precisamente así, si ajustáis el tamaño 463 00:18:14,950 --> 00:18:16,910 del frame, de estos componentes, al ponerlos 464 00:18:16,910 --> 00:18:18,890 seguidos, porque cuando no caben es al trabajo 465 00:18:18,890 --> 00:18:20,809 pero vamos, que como queden 466 00:18:20,809 --> 00:18:22,309 colocados es lo de los demás, vale 467 00:18:22,309 --> 00:18:26,950 y una etiqueta para el resultado de la suma 468 00:18:26,950 --> 00:18:28,690 o de la multiplicación o de lo que queráis 469 00:18:28,690 --> 00:18:31,990 claro, que muestre el resultado 470 00:18:31,990 --> 00:18:34,789 vale, pues venga, esa aplicación 471 00:18:34,789 --> 00:18:36,109 es solo para ver que 472 00:18:36,109 --> 00:18:38,089 la hacéis vosotros desde cero 473 00:18:38,089 --> 00:18:40,769 y para ver que vale, que sí, que esta arquitectura