1 00:00:00,000 --> 00:00:00,840 No me va a gustar esto. 2 00:00:01,899 --> 00:00:02,640 A ver. 3 00:00:03,399 --> 00:00:04,179 Bueno, pues venga. 4 00:00:05,040 --> 00:00:07,639 Saltamos a, como ya tenemos unos conocimientos de base, 5 00:00:07,879 --> 00:00:09,679 más o menos apañados, decentes, 6 00:00:09,740 --> 00:00:13,960 como para poder hacer aplicaciones un poquito más complejas, 7 00:00:14,039 --> 00:00:15,320 que tengan más funcionalidades, 8 00:00:15,980 --> 00:00:18,079 pues dejarlas con la consola todo el rato, 9 00:00:19,000 --> 00:00:21,019 pues es muy patatero, ¿no? 10 00:00:21,539 --> 00:00:24,120 Ya que podemos hacer una verdadera aplicación de gestión, 11 00:00:24,260 --> 00:00:25,320 de nóminas, de no sé qué, 12 00:00:25,920 --> 00:00:28,559 pues Pablo Ramos y su amigo. 13 00:00:28,559 --> 00:00:30,280 ya que podemos hacer una 14 00:00:30,280 --> 00:00:36,880 ya que podemos hacer una aplicación 15 00:00:36,880 --> 00:00:38,679 podríamos ya si quisiéramos 16 00:00:38,679 --> 00:00:39,979 ya si quisierais en realidad 17 00:00:39,979 --> 00:00:43,119 con los conocimientos que queréis 18 00:00:43,119 --> 00:00:44,960 podéis hacer una aplicación 19 00:00:44,960 --> 00:00:47,020 que gestione cualquier cosa, lo que sea 20 00:00:47,020 --> 00:00:48,439 claro, que nos falta 21 00:00:48,439 --> 00:00:50,820 pues nos falta 22 00:00:50,820 --> 00:00:53,039 la persistencia de los datos, que todos los datos 23 00:00:53,039 --> 00:00:54,140 los vais a tener que coger 24 00:00:54,140 --> 00:00:56,759 sobre la marcha en el momento en que la aplicación arranca 25 00:00:56,759 --> 00:00:59,020 y cuando la aplicación se cierre van a desaparecer. 26 00:00:59,539 --> 00:01:00,719 Pues sí, esa parte os faltaría. 27 00:01:01,560 --> 00:01:03,060 La de los datos persistentes, 28 00:01:03,200 --> 00:01:05,340 poder cogerlos de una base de datos o de lo que sea. 29 00:01:05,420 --> 00:01:06,780 Pero lo que es la lógica, la gestión, 30 00:01:07,459 --> 00:01:09,519 tenéis todo lo necesario para hacer cualquier tipo 31 00:01:09,519 --> 00:01:11,219 de tratamiento de los datos de gestión 32 00:01:11,219 --> 00:01:12,439 de todo lo que es una aplicación. 33 00:01:12,780 --> 00:01:14,959 Os falta simplemente la parte de conectarlo con el exterior, 34 00:01:15,079 --> 00:01:15,379 nada más. 35 00:01:16,219 --> 00:01:18,420 Y también nos falta la parte de hacerla un poquito 36 00:01:18,420 --> 00:01:19,439 a lo mejor más amigable. 37 00:01:19,540 --> 00:01:21,420 Si hacemos una aplicación de gestión de personal, 38 00:01:21,420 --> 00:01:22,959 de usuarios, de nóminas, de lo que sea, 39 00:01:23,519 --> 00:01:26,040 pues hombre, estar todo el rato pidiéndoselo por consola 40 00:01:26,040 --> 00:01:28,980 pues es un rollo, es implanteable 41 00:01:28,980 --> 00:01:30,840 ¿no? cuando tú eliges, elige usuario 42 00:01:30,840 --> 00:01:32,900 pues hombre, lo normal es que quieras mostrarle 43 00:01:32,900 --> 00:01:34,719 un desplegable con todo usuario posible 44 00:01:34,719 --> 00:01:36,900 él lo elija, etcétera, y esa aplicación 45 00:01:36,900 --> 00:01:39,060 ya si la vas a poder vender, una aplicación por consola 46 00:01:39,060 --> 00:01:40,719 pues no vas a poder venderla 47 00:01:40,719 --> 00:01:42,980 bueno, vas a poder venderla 48 00:01:42,980 --> 00:01:44,640 o no, pero bueno 49 00:01:44,640 --> 00:01:47,099 entonces, vamos a 50 00:01:47,099 --> 00:01:48,439 ver los principios de 51 00:01:48,439 --> 00:01:51,280 el diseño 52 00:01:51,280 --> 00:01:52,200 de diseño 53 00:01:52,200 --> 00:01:54,420 de creación de interfaces gráficas 54 00:01:54,420 --> 00:01:57,760 Entonces, vamos a ver 55 00:01:57,760 --> 00:02:02,480 ¿En qué se basan las interfaces gráficas en Java? 56 00:02:03,480 --> 00:02:04,700 Esencialmente es 57 00:02:04,700 --> 00:02:07,180 Un método muy breve y nos ponemos en 58 00:02:07,180 --> 00:02:17,500 Y nos ponemos en faena 59 00:02:26,120 --> 00:02:36,680 Por ejemplo, pero no me peta 60 00:02:36,680 --> 00:02:38,699 Pantalla LED 61 00:02:38,699 --> 00:02:40,639 Bucles 62 00:02:40,639 --> 00:02:41,120 Guay 63 00:02:41,120 --> 00:02:58,879 Así que ha sacado un 10 en bases de datos 64 00:02:58,879 --> 00:03:03,280 La única en las tres clases 65 00:03:03,280 --> 00:03:04,479 Fíjate 66 00:03:08,879 --> 00:03:10,159 Pero no seas tan modesta 67 00:03:10,159 --> 00:03:20,800 no la conozco 68 00:03:20,800 --> 00:03:21,840 muy modesta no es 69 00:03:21,840 --> 00:03:29,360 si desde luego 70 00:03:29,360 --> 00:03:31,759 la modestia 71 00:03:31,759 --> 00:03:32,939 no es tu punto fuerte 72 00:03:32,939 --> 00:03:33,719 pero no pasa nada 73 00:03:33,719 --> 00:03:35,180 no necesitas ser modesta 74 00:03:35,180 --> 00:03:36,659 pues ya está 75 00:03:36,659 --> 00:03:39,240 toma ya 76 00:03:39,240 --> 00:03:41,699 eso es bueno 77 00:03:41,699 --> 00:03:49,539 ya, lo que pasa es que 78 00:03:49,539 --> 00:04:06,500 bueno, y si realmente 79 00:04:06,500 --> 00:04:08,479 son tan inteligentes, lo ideal es cuando 80 00:04:08,479 --> 00:04:10,599 se dan cuenta las veces de que no la llevan 81 00:04:10,599 --> 00:04:13,240 no, no hablo de ella 82 00:04:13,240 --> 00:04:14,879 no, no hablo de ella 83 00:04:14,879 --> 00:04:15,759 hablo general 84 00:04:15,759 --> 00:04:18,459 claro, no hay mayor 85 00:04:18,459 --> 00:04:19,879 signo de inteligencia 86 00:04:19,879 --> 00:04:22,399 que saber cuándo estás equivocado 87 00:04:22,399 --> 00:04:24,459 que no es el caso 88 00:04:24,459 --> 00:04:26,420 ella no está equivocada 89 00:04:26,420 --> 00:04:27,040 faltaría más 90 00:04:27,040 --> 00:04:30,720 hay que afirmar cuando estás en lo correcto 91 00:04:30,720 --> 00:04:32,160 y también saber equivocarte con otros valores 92 00:04:32,160 --> 00:04:33,199 efectivo 93 00:04:33,199 --> 00:04:36,079 bueno, a ver, entonces 94 00:04:36,079 --> 00:04:54,199 Bueno, la filosofía... 95 00:04:54,199 --> 00:04:56,019 ¡Ah! Ya se me ha ocurrido 96 00:04:56,019 --> 00:04:56,800 una cosa. 97 00:04:59,439 --> 00:05:00,319 ¿Qué otra cosa 98 00:05:00,319 --> 00:05:01,259 vamos a meter este año? 99 00:05:01,259 --> 00:05:02,379 Lo voy a decir luego a Estefan. 100 00:05:02,459 --> 00:05:03,800 ¿Se trata de iluminarte? 101 00:05:04,000 --> 00:05:04,259 Sí. 102 00:05:04,259 --> 00:05:13,699 Bueno, si lo voy a hacer 103 00:05:13,699 --> 00:05:14,339 Y os va a gustar 104 00:05:14,339 --> 00:05:15,579 Bueno, si, Estefano 105 00:05:15,579 --> 00:05:20,319 Bueno, esa es la formación de interfaces gráficas 106 00:05:20,319 --> 00:05:21,180 Un poquito más profesional 107 00:05:21,180 --> 00:05:23,000 Bueno, pues los videojuegos antiguos estaban en FX 108 00:05:23,000 --> 00:05:24,779 Había la saga esta 109 00:05:24,779 --> 00:05:26,060 FX se llamaba 110 00:05:26,060 --> 00:05:28,879 Sí, no sé si será el mismo FX 111 00:05:28,879 --> 00:05:30,279 Que los paquetes FX de Java 112 00:05:30,279 --> 00:05:30,860 Puede ser 113 00:05:30,860 --> 00:05:31,560 Bueno, pues 114 00:05:31,560 --> 00:05:34,560 vale, a ver 115 00:05:34,560 --> 00:05:35,839 interfaces gráficas o Java 116 00:05:35,839 --> 00:05:39,459 la filosofía de creación 117 00:05:39,459 --> 00:05:40,579 de interfaces gráficas 118 00:05:40,579 --> 00:05:43,560 es la misma en cualquier lenguaje 119 00:05:43,560 --> 00:05:44,600 es todo muy parecido 120 00:05:44,600 --> 00:05:45,639 entonces 121 00:05:45,639 --> 00:05:49,000 Java ya en la máquina virtual 122 00:05:49,000 --> 00:05:51,240 trae su paquete 123 00:05:51,240 --> 00:05:53,100 con todas las clases 124 00:05:53,100 --> 00:05:55,019 que tenemos que usar, callaos ya de una vez 125 00:05:55,019 --> 00:05:56,519 Jesús, que calles 126 00:06:01,560 --> 00:06:05,480 bueno 127 00:06:05,480 --> 00:06:08,519 pues ya trae 128 00:06:08,519 --> 00:06:10,500 un montón de clases en un paquete 129 00:06:10,500 --> 00:06:11,180 que es este 130 00:06:11,180 --> 00:06:14,519 el JavaXSwing, un montón de clases 131 00:06:14,519 --> 00:06:16,579 ya hechas que nosotros utilizamos 132 00:06:16,579 --> 00:06:18,560 y por supuesto 133 00:06:18,560 --> 00:06:20,879 la base de la arquitectura 134 00:06:20,879 --> 00:06:22,800 de cualquier aplicación con interfaz gráfica 135 00:06:22,800 --> 00:06:23,920 como siempre 136 00:06:23,920 --> 00:06:26,040 es la herencia 137 00:06:26,040 --> 00:06:30,519 y la implementación 138 00:06:30,519 --> 00:06:42,100 Vale, silencio 139 00:06:42,100 --> 00:06:42,819 Entonces 140 00:06:42,819 --> 00:06:49,620 Vale, pues entonces 141 00:06:49,620 --> 00:06:52,220 Java Xfin tiene un montón de clases 142 00:06:52,220 --> 00:06:54,360 Los marcos 143 00:06:54,360 --> 00:06:55,959 Los paneles, los botones 144 00:06:55,959 --> 00:06:57,560 Los desplegables, las barritas 145 00:06:57,560 --> 00:06:58,899 Trae un montón de clases 146 00:06:58,899 --> 00:07:02,100 Y nosotros construimos heredando 147 00:07:02,100 --> 00:07:02,800 Sobre ellas 148 00:07:02,800 --> 00:07:05,680 y en el momento de heredar personalizamos 149 00:07:05,680 --> 00:07:07,560 personalizamos lo que nosotros 150 00:07:07,560 --> 00:07:09,319 queramos, cosas como la 151 00:07:09,319 --> 00:07:11,040 posición, el color, etc 152 00:07:11,040 --> 00:07:11,860 ¿vale? 153 00:07:12,720 --> 00:07:15,279 luego eso es lo primero, con herencia 154 00:07:15,279 --> 00:07:16,240 y implementación 155 00:07:16,240 --> 00:07:18,540 construimos 156 00:07:18,540 --> 00:07:24,430 versiones 157 00:07:24,430 --> 00:07:27,050 personalizadas 158 00:07:27,050 --> 00:07:29,829 de las clases 159 00:07:29,829 --> 00:07:30,949 que ya nos da ese paquete 160 00:07:30,949 --> 00:07:36,350 ¿vale? 161 00:07:36,350 --> 00:07:40,279 y con eso ya 162 00:07:40,279 --> 00:07:41,600 creamos nuestra interfaz 163 00:07:41,600 --> 00:07:44,579 lógicamente 164 00:07:44,579 --> 00:07:46,279 no podemos conocernos las tropecientas 165 00:07:46,279 --> 00:07:47,699 clases que hay en java xswing 166 00:07:47,699 --> 00:07:50,000 conocemos las básicas, luego si queremos hacer 167 00:07:50,000 --> 00:07:52,180 alguna cosa en concreto, pues nos vamos y miramos 168 00:07:52,180 --> 00:07:53,879 ¿hay un componente para esto? 169 00:07:53,980 --> 00:07:56,139 si lo hay, lo usamos, lo incorporamos, etc 170 00:07:56,139 --> 00:07:58,360 bueno, pues construimos nuestra versión 171 00:07:58,360 --> 00:07:59,100 personalizada 172 00:07:59,100 --> 00:08:02,220 y luego hay otra segunda parte 173 00:08:02,220 --> 00:08:03,180 que es 174 00:08:03,180 --> 00:08:06,060 la interfaz, no es solo construir 175 00:08:06,060 --> 00:08:08,060 un cuadro bonito, con botones, etiquetas 176 00:08:08,060 --> 00:08:10,480 no sé qué, tiene que tener un comportamiento 177 00:08:10,480 --> 00:08:14,339 yo hago mi interfaz con sus botones 178 00:08:14,339 --> 00:08:16,199 sus etiquetas, sus desplegables 179 00:08:16,199 --> 00:08:17,500 pero luego 180 00:08:17,500 --> 00:08:20,139 el usuario cuando accione 181 00:08:20,139 --> 00:08:22,339 esos componentes tiene que pasar algo 182 00:08:22,339 --> 00:08:24,199 luego hay otra segunda 183 00:08:24,199 --> 00:08:26,160 parte, que es la 184 00:08:26,160 --> 00:08:27,500 parte del comportamiento 185 00:08:27,500 --> 00:08:29,660 eso 186 00:08:29,660 --> 00:08:34,850 luego 187 00:08:34,850 --> 00:08:37,629 la interfaz 188 00:08:37,629 --> 00:08:39,990 o sea la aplicación 189 00:08:39,990 --> 00:08:40,909 más que la interfaz 190 00:08:40,909 --> 00:08:45,730 la aplicación 191 00:08:45,730 --> 00:08:48,470 tiene que dar respuesta 192 00:08:48,470 --> 00:08:50,730 a las acciones que el usuario haga 193 00:08:50,730 --> 00:08:51,809 sobre la interfaz 194 00:08:51,809 --> 00:09:10,299 a las acciones del usuario 195 00:09:10,299 --> 00:09:18,840 luego son dos cosas separadas 196 00:09:18,840 --> 00:09:20,059 las que tenemos que programar 197 00:09:20,059 --> 00:09:21,960 por un lado construimos la interfaz 198 00:09:21,960 --> 00:09:26,639 para eso hay incluso aplicaciones 199 00:09:26,639 --> 00:09:27,759 el famoso Pencil 200 00:09:27,759 --> 00:09:30,639 que no tenemos ni que usar Java ni nada 201 00:09:30,639 --> 00:09:32,759 aplicaciones para que tú construyas 202 00:09:32,759 --> 00:09:34,919 un prototipo del aspecto de la interfaz 203 00:09:34,919 --> 00:09:36,059 se la enseñas al usuario 204 00:09:36,059 --> 00:09:38,740 ¿Este es el aspecto que quieres que tenga tus pantallas? 205 00:09:38,919 --> 00:09:40,740 Ah, sí, las pantallas de la aplicación creo que tengan 206 00:09:40,740 --> 00:09:41,899 este aspecto. Ah, fenomenal. 207 00:09:42,519 --> 00:09:45,080 Y esas aplicaciones valen solo para construir 208 00:09:45,080 --> 00:09:46,320 aspectos de pantalla 209 00:09:46,320 --> 00:09:48,379 para que tú se los vayas enseñando al usuario 210 00:09:48,379 --> 00:09:50,720 y no tienes que programar en Java todavía. 211 00:09:51,200 --> 00:09:53,000 Cuando él te dice, sí, sí, mis pantallas 212 00:09:53,000 --> 00:09:55,019 la pantalla de login, la pantalla de crear 213 00:09:55,019 --> 00:09:57,460 pedido, no sé qué, estas me gustan, quiero que sean estas. 214 00:09:58,039 --> 00:09:58,539 Pues ya está. 215 00:09:58,539 --> 00:10:01,220 entonces tú ya programas eso en Java 216 00:10:01,220 --> 00:10:03,100 que es muy sencillo, lo pones ahí, se acabó 217 00:10:03,100 --> 00:10:05,039 y ahora empieza la segunda parte 218 00:10:05,039 --> 00:10:06,899 que es la parte de 219 00:10:06,899 --> 00:10:09,100 vale, ahora el usuario va a llegar y de forma 220 00:10:09,100 --> 00:10:10,460 completamente asíncrona 221 00:10:10,460 --> 00:10:12,320 va a accionar estos comandos 222 00:10:12,320 --> 00:10:15,000 entonces ahora mi aplicación tiene que dar una respuesta 223 00:10:15,000 --> 00:10:16,860 concreta a la acción 224 00:10:16,860 --> 00:10:17,779 del usuario 225 00:10:17,779 --> 00:10:21,000 pues ahora del botoncito añadir usuario 226 00:10:21,000 --> 00:10:22,980 pues tendrá que dar una respuesta que sea 227 00:10:22,980 --> 00:10:24,899 instanciar un objeto 228 00:10:24,899 --> 00:10:27,000 usuario, meterlo en la colección 229 00:10:27,000 --> 00:10:28,960 a su vez refrescar 230 00:10:28,960 --> 00:10:30,620 la interfaz para que te aparezca 231 00:10:30,620 --> 00:10:31,940 en el desplegable, lo que sea 232 00:10:31,940 --> 00:10:33,899 luego una parte es 233 00:10:33,899 --> 00:10:35,899 el diseño de la interfaz 234 00:10:35,899 --> 00:10:37,980 y luego otra parte es 235 00:10:37,980 --> 00:10:40,960 la programación de la respuesta 236 00:10:40,960 --> 00:10:42,679 a los eventos del usuario 237 00:10:42,679 --> 00:10:44,879 y eso ya es un primer cambio extraño 238 00:10:44,879 --> 00:10:46,379 porque hasta ahora nuestros programas 239 00:10:46,379 --> 00:10:48,080 eran todos secuenciales 240 00:10:48,080 --> 00:10:50,620 iba una cosa tras otra, todo 241 00:10:50,620 --> 00:10:52,759 yo iba cambiando de método, ahora me iba esta 242 00:10:52,759 --> 00:10:54,500 ahora me iba esta, pero siempre se hacía una cosa 243 00:10:54,500 --> 00:10:56,240 tras la otra, luego era todo 244 00:10:56,240 --> 00:10:57,919 síncrono, que se llama 245 00:10:57,919 --> 00:11:00,539 todo era síncrono, es decir 246 00:11:00,539 --> 00:11:02,419 no había ningún evento que llegara 247 00:11:02,419 --> 00:11:03,419 fuera de control 248 00:11:03,419 --> 00:11:06,399 incluso cuando se lanzaba una excepción 249 00:11:06,399 --> 00:11:08,679 también era síncrona, porque la excepción 250 00:11:08,679 --> 00:11:10,360 se lanzaba cuando 251 00:11:10,360 --> 00:11:12,399 llegaba una sentencia throw que se había hecho 252 00:11:12,399 --> 00:11:14,279 después de otra, que había detectado no sé qué 253 00:11:14,279 --> 00:11:15,779 todo es una línea así 254 00:11:15,779 --> 00:11:18,620 pues ahora 255 00:11:18,620 --> 00:11:20,360 ya entra un comportamiento 256 00:11:20,360 --> 00:11:22,240 asíncrono, el programa 257 00:11:22,240 --> 00:11:23,419 muestra su interfaz 258 00:11:23,419 --> 00:11:26,139 y se queda ahí esperando, no termina 259 00:11:26,139 --> 00:11:28,899 Hasta ahora cuando un programa acababa 260 00:11:28,899 --> 00:11:30,600 De ejecutar todo su código 261 00:11:30,600 --> 00:11:31,240 Terminaba 262 00:11:31,240 --> 00:11:33,899 Ahora el programa habrá terminado 263 00:11:33,899 --> 00:11:35,740 De poner sus componentes 264 00:11:35,740 --> 00:11:37,940 Pero no habrá acabado el mail 265 00:11:37,940 --> 00:11:39,799 Aunque no haya más sentencias 266 00:11:39,799 --> 00:11:47,740 Bueno, más que como switch case 267 00:11:47,740 --> 00:11:49,340 Como una sentencia de lectura de read 268 00:11:49,340 --> 00:11:51,200 Si tú haces un read 269 00:11:51,200 --> 00:11:52,679 Eso se queda ya a la espera 270 00:11:52,679 --> 00:11:53,840 Pero se queda bloqueado 271 00:11:53,840 --> 00:11:56,360 en esa sentencia 272 00:11:56,360 --> 00:11:58,639 claro, aquí no se queda bloqueado 273 00:11:58,639 --> 00:12:00,639 el programa, no es que se quede bloqueado 274 00:12:00,639 --> 00:12:01,820 sino que no ha terminado 275 00:12:01,820 --> 00:12:04,940 y ahí está, entonces cuando de repente 276 00:12:04,940 --> 00:12:06,539 el usuario 277 00:12:06,539 --> 00:12:07,240 hace una acción 278 00:12:07,240 --> 00:12:09,820 el programa se da cuenta 279 00:12:09,820 --> 00:12:12,679 ¿cómo se da cuenta? pues yo creo que lo hay que programar 280 00:12:12,679 --> 00:12:14,100 hay que ver cómo lo hacemos, se da cuenta 281 00:12:14,100 --> 00:12:15,679 y responde con un código 282 00:12:15,679 --> 00:12:18,860 por ahora lo único que quiero decir es que hay dos partes muy separadas 283 00:12:18,860 --> 00:12:20,899 la construcción de la interfaz 284 00:12:20,899 --> 00:12:22,600 lo que es el aspecto que le podemos dar 285 00:12:22,600 --> 00:12:27,039 Luego, ¿cómo damos comportamiento a los eventos que decidamos que son los que importan? 286 00:12:27,639 --> 00:12:31,899 Pues darle a un botón, o abrir un desplegable, o abrir un menú, o lo que sea. 287 00:12:35,600 --> 00:12:38,919 Bueno, en cuanto a construir la interfaz. 288 00:12:41,240 --> 00:12:44,980 Principios muy básicos de cómo se construye una interfaz. 289 00:12:55,360 --> 00:13:05,559 Bueno, pues la arquitectura de una interfaz gráfica en Java. 290 00:13:05,559 --> 00:13:08,019 una interfaz gráfica en Java 291 00:13:08,019 --> 00:13:09,980 se apoya 292 00:13:09,980 --> 00:13:13,610 en una especie de marco 293 00:13:13,610 --> 00:13:15,710 general, lo que se llama 294 00:13:15,710 --> 00:13:16,289 la ventana 295 00:13:16,289 --> 00:13:18,730 un marco general que es la ventana 296 00:13:18,730 --> 00:13:21,090 que tiene lo básico 297 00:13:21,090 --> 00:13:23,769 que es los botoncitos estos de minimizar 298 00:13:23,769 --> 00:13:24,970 maximizar 299 00:13:24,970 --> 00:13:27,070 y la cruz en el orden que sea 300 00:13:27,070 --> 00:13:29,149 aquí esta barrita 301 00:13:29,149 --> 00:13:30,269 y ya está 302 00:13:30,269 --> 00:13:33,110 esta sería la raíz 303 00:13:33,110 --> 00:13:35,090 de cualquier interfaz gráfica esta es la raíz 304 00:13:35,090 --> 00:13:37,789 es como si fuera el marco principal 305 00:13:37,789 --> 00:13:40,950 bueno pues esto afortunadamente ya está hecho 306 00:13:40,950 --> 00:13:42,090 lo tenemos que hacer nosotros 307 00:13:42,090 --> 00:13:44,450 y esto es la clase JFrame 308 00:13:44,450 --> 00:13:47,779 vale 309 00:13:47,779 --> 00:13:49,879 luego 310 00:13:49,879 --> 00:13:53,580 la clase JFrame tiene que tener al menos 311 00:13:53,580 --> 00:13:56,399 una cosa que se llama un contenedor 312 00:13:56,399 --> 00:14:00,340 los contenedores son los que tienen los componentes 313 00:14:00,340 --> 00:14:01,539 los contenedores tienen los componentes 314 00:14:01,539 --> 00:14:03,080 bueno pues el JFrame 315 00:14:03,080 --> 00:14:06,759 tiene un contenedor 316 00:14:06,759 --> 00:14:09,000 que es el contenedor principal 317 00:14:09,000 --> 00:14:17,330 y este pertenece a la clase JPanel 318 00:14:17,330 --> 00:14:21,129 luego ya tenemos dos clases que identificamos 319 00:14:21,129 --> 00:14:23,009 JFrame que es el marco principal 320 00:14:23,009 --> 00:14:24,070 todo eso es en general 321 00:14:24,070 --> 00:14:27,210 luego tú puedes hacer un JFrame asociado a una de diálogo 322 00:14:27,210 --> 00:14:28,269 con lo cual esto no lo ves 323 00:14:28,269 --> 00:14:30,269 luego aparentemente no tienes esto 324 00:14:30,269 --> 00:14:31,830 luego hay Swim 325 00:14:31,830 --> 00:14:34,629 hay libros de Swim de 3.000 páginas o 4.000 326 00:14:34,629 --> 00:14:35,669 luego hay muchas 327 00:14:35,669 --> 00:14:42,419 sí, estará bien por lo caso aquí 328 00:14:42,419 --> 00:14:43,159 no sé 329 00:14:43,159 --> 00:14:57,019 Bueno, ya tenemos dos clases 330 00:14:57,019 --> 00:14:58,679 El JPanel es un contenedor 331 00:14:58,679 --> 00:15:00,659 El JPanel va asociado a un frame 332 00:15:00,659 --> 00:15:02,320 No va nunca solo 333 00:15:02,320 --> 00:15:04,039 El siempre va asociado a un frame 334 00:15:04,039 --> 00:15:07,379 Y este ya es un contenedor 335 00:15:07,379 --> 00:15:08,919 Que ya puede tener cosas 336 00:15:08,919 --> 00:15:10,379 ¿Y qué puede tener? 337 00:15:10,379 --> 00:15:13,159 componentes, como un botoncito 338 00:15:13,159 --> 00:15:14,259 esto es un componente 339 00:15:14,259 --> 00:15:19,850 o puede tener a su vez otros contenedores 340 00:15:19,850 --> 00:15:21,889 contenedores secundarios 341 00:15:21,889 --> 00:15:23,029 es decir, un 342 00:15:23,029 --> 00:15:25,409 contenedor, este contenedor principal 343 00:15:25,409 --> 00:15:27,210 puede tener a su vez otro contenedor 344 00:15:27,210 --> 00:15:28,490 que sea otro JPanel 345 00:15:28,490 --> 00:15:31,350 un contenedor secundario que tiene aquí 346 00:15:31,350 --> 00:15:31,850 otros 347 00:15:31,850 --> 00:15:34,190 ¿Y para el diseño de que salga al medio, que salga a la derecha y todo eso? 348 00:15:34,730 --> 00:15:35,250 Sí, ahora 349 00:15:35,250 --> 00:15:36,509 ¿Vale? Entonces 350 00:15:36,509 --> 00:15:39,970 luego tenemos el marco 351 00:15:39,970 --> 00:15:41,909 contenedores 352 00:15:41,909 --> 00:15:44,029 el principal y secundario 353 00:15:44,029 --> 00:15:45,549 si quiero, y luego 354 00:15:45,549 --> 00:15:47,649 componentes, que ya son los elementos 355 00:15:47,649 --> 00:15:49,929 que reciben los eventos en general, los botones 356 00:15:49,929 --> 00:15:51,210 los desplegables, los menús 357 00:15:51,210 --> 00:15:54,049 y esos van en los contenedores 358 00:15:54,049 --> 00:15:55,289 van en los contenedores 359 00:15:55,289 --> 00:15:57,309 esa es la idea muy general 360 00:15:57,309 --> 00:15:58,610 de construcción 361 00:15:58,610 --> 00:16:02,049 componente típico, pues el botoncito 362 00:16:02,049 --> 00:16:05,730 ese, vale 363 00:16:05,730 --> 00:16:07,710 ahora, efectivamente 364 00:16:07,710 --> 00:16:09,830 como se ponen 365 00:16:09,830 --> 00:16:10,929 tosa y amogollón 366 00:16:10,929 --> 00:16:12,509 hombre, pues no 367 00:16:12,509 --> 00:16:15,809 entonces, para colocarlos 368 00:16:15,809 --> 00:16:17,990 hay otras clases que se llaman 369 00:16:17,990 --> 00:16:19,250 gestores de ubicación 370 00:16:19,250 --> 00:16:21,169 que uno las configura 371 00:16:21,169 --> 00:16:23,850 y a través 372 00:16:23,850 --> 00:16:25,490 de la configuración que hayamos eso 373 00:16:25,490 --> 00:16:26,929 en esos gestores de ubicación 374 00:16:26,929 --> 00:16:29,269 pues se colocan las cosas de una manera o de otra 375 00:16:29,269 --> 00:16:31,409 o también tenemos la alternativa 376 00:16:31,409 --> 00:16:33,250 de pasar de los gestores de ubicación 377 00:16:33,250 --> 00:16:35,549 y colocarlo por 378 00:16:35,549 --> 00:16:37,429 coordenadas, cada vez que añadimos un componente 379 00:16:37,429 --> 00:16:39,509 decirle al tener el componente la coordenada 380 00:16:39,509 --> 00:16:41,289 x y con alto y ancho tal 381 00:16:41,289 --> 00:16:43,509 ¿vale? pasamos de gestores 382 00:16:43,509 --> 00:16:45,590 y entonces cada colocación de componente 383 00:16:45,590 --> 00:16:47,590 hay que decirle, coordenada x 384 00:16:47,590 --> 00:16:49,570 coordenada y, ancho del componente y alto 385 00:16:49,570 --> 00:16:51,409 del componente, y ya está 386 00:16:51,409 --> 00:16:53,710 ¿vale? colocación absoluta, efectivamente 387 00:16:53,710 --> 00:16:55,690 entonces la solución 388 00:16:55,690 --> 00:16:57,570 de la gestión de la ubicación de los componentes 389 00:16:57,570 --> 00:16:59,529 es lógica y también hay que darle, o bien 390 00:16:59,529 --> 00:17:01,429 absoluta de esta manera o bien con un gestor 391 00:17:01,429 --> 00:17:03,509 de ubicación, y luego una vez que 392 00:17:03,509 --> 00:17:05,390 esto está, pues ahora ya hay que 393 00:17:05,390 --> 00:17:07,410 ver, y ahora ya esto lo tengo, muy bien 394 00:17:07,410 --> 00:17:09,369 muy bonito, vale, ahora 395 00:17:09,369 --> 00:17:11,410 ya como hago para que si el usuario llega 396 00:17:11,410 --> 00:17:12,609 de repente y hace plag 397 00:17:12,609 --> 00:17:14,390 pase algo 398 00:17:14,390 --> 00:17:17,390 bueno, pues ahora tendremos que ver 399 00:17:17,390 --> 00:17:19,089 como hacemos eso, pero bueno 400 00:17:19,089 --> 00:17:20,289 vamos a hacer la 401 00:17:20,289 --> 00:17:22,970 primera cosa esta 402 00:17:28,730 --> 00:17:29,130 ¿Vale? 403 00:17:29,210 --> 00:17:29,289 ¿Vale? 404 00:17:29,289 --> 00:17:29,349 ¿Vale? 405 00:17:29,349 --> 00:17:33,470 Pues esta es la idea 406 00:17:33,470 --> 00:17:35,369 y sobre esta idea ya podéis hacer 407 00:17:35,369 --> 00:17:36,430 lo que os dé la gana 408 00:17:36,430 --> 00:17:38,309 bueno, luego aparte hay otra cosa 409 00:17:38,309 --> 00:17:40,009 está el paquete gráficos 410 00:17:40,009 --> 00:17:42,230 que eso es otra cosa, que eso es para hacer dibujos 411 00:17:42,230 --> 00:17:44,230 círculos, animaciones 412 00:17:44,230 --> 00:17:46,049 que eso bueno, también lo mencionaremos 413 00:17:46,049 --> 00:17:48,170 y lo veremos, ahora estamos hablando de interfaces 414 00:17:48,170 --> 00:17:50,029 gráficas para comunicarte con el usuario 415 00:17:50,029 --> 00:17:57,829 el año que viene, sí 416 00:17:57,829 --> 00:17:59,890 una optativa de 3 horas 417 00:17:59,890 --> 00:18:02,130 que la da Estefan 418 00:18:02,130 --> 00:18:04,049 o al menos 419 00:18:04,049 --> 00:18:05,670 me lo ha prometido 420 00:18:05,670 --> 00:18:06,910 así que 421 00:18:06,910 --> 00:18:15,789 pues vas a aprender a programar 422 00:18:15,789 --> 00:18:16,650 y a hacer videojuegos 423 00:18:16,650 --> 00:18:20,250 y acabaste encontrando un nuevo corte 424 00:18:20,250 --> 00:18:21,829 que es más valioso 425 00:18:21,829 --> 00:18:24,869 bueno 426 00:18:24,869 --> 00:18:30,509 pues ala 427 00:18:30,509 --> 00:18:35,569 vamos a hacernos 428 00:18:35,569 --> 00:18:39,809 Primera interfaz gráfica 429 00:18:39,809 --> 00:18:42,289 Vamos a ser organizados con los proyectos 430 00:18:42,289 --> 00:18:46,650 Porque como es vuestro principal material 431 00:18:46,650 --> 00:18:48,250 Pues vamos a ser organizados 432 00:18:48,250 --> 00:18:57,460 Primera interfaz gráfica 433 00:18:57,460 --> 00:19:01,769 Primera GUI 434 00:19:01,769 --> 00:19:03,829 Que así la vamos a encontrar antes 435 00:19:03,829 --> 00:19:08,369 GUI 436 00:19:08,369 --> 00:19:10,769 vamos a hacer la primera GUI 437 00:19:10,769 --> 00:19:12,910 que es un hombre profesional 438 00:19:12,910 --> 00:19:13,230 ¿no? 439 00:19:31,769 --> 00:19:33,069 venga, pues yo tengo aquí 440 00:19:33,069 --> 00:19:35,470 me voy a hacer mi programa 441 00:19:35,470 --> 00:19:44,200 venga 442 00:19:44,200 --> 00:19:45,779 a mi me dicen 443 00:19:45,779 --> 00:19:47,920 haz un programa 444 00:19:47,920 --> 00:19:51,079 con dos botones 445 00:19:51,079 --> 00:19:53,180 y según el botón 446 00:19:53,180 --> 00:19:54,880 que des, pues te diga 447 00:19:54,880 --> 00:19:56,700 hola o te diga adiós, por ejemplo 448 00:19:56,700 --> 00:19:58,839 depende de si quieres irte o llegar 449 00:19:58,839 --> 00:20:01,319 o sea es un botoncito 450 00:20:01,319 --> 00:20:03,180 vamos a hacer 451 00:20:03,180 --> 00:20:04,059 una aplicación 452 00:20:04,059 --> 00:20:07,220 para que yo me pueda despedir 453 00:20:07,220 --> 00:20:08,539 de vosotros 454 00:20:08,539 --> 00:20:11,539 o saludar sin tener que hacer 455 00:20:11,539 --> 00:20:12,940 el esfuerzo de hablar, ¿no? 456 00:20:13,180 --> 00:20:15,299 Si yo doy al botón de hola, pues aparece 457 00:20:15,299 --> 00:20:16,180 un hola ahí gigante. 458 00:20:17,059 --> 00:20:19,400 Y si doy al botón de adiós, pues aparece un adiós gigante. 459 00:20:19,700 --> 00:20:20,480 Así no tengo que hablar. 460 00:20:21,119 --> 00:20:22,920 Vale, pues me han plantado esa situación. 461 00:20:24,279 --> 00:20:25,319 Bueno, pues lo primero 462 00:20:25,319 --> 00:20:25,940 es que 463 00:20:25,940 --> 00:20:29,460 tengo que construir, tengo que pensar. 464 00:20:29,799 --> 00:20:31,279 Vale, ¿qué interfaz gráfica voy a necesitar 465 00:20:31,279 --> 00:20:31,740 para eso? 466 00:20:32,880 --> 00:20:35,099 Me han dicho, bueno, es una cosita con 467 00:20:35,099 --> 00:20:36,160 dos botoncitos. 468 00:20:36,160 --> 00:20:38,180 bueno, dos botones tiene que haber 469 00:20:38,180 --> 00:20:39,740 y luego 470 00:20:39,740 --> 00:20:42,380 la respuesta del programa va a ser 471 00:20:42,380 --> 00:20:44,519 mostrar un hola 472 00:20:44,519 --> 00:20:46,299 mostrar un adiós 473 00:20:46,299 --> 00:20:48,380 ese hola y ese adiós, ¿dónde lo voy a mostrar? 474 00:20:48,599 --> 00:20:50,920 bueno, pues me voy a buscar un componente 475 00:20:50,920 --> 00:20:52,440 que sirva para 476 00:20:52,440 --> 00:20:54,420 buscar texto, para poner 477 00:20:54,420 --> 00:20:56,579 texto, perdón, y cuando encuentre un componente 478 00:20:56,579 --> 00:20:58,359 que sirva para poner texto, pues lo pongo 479 00:20:58,359 --> 00:21:00,740 también a interfaz, vale, pues mi interfaz 480 00:21:00,740 --> 00:21:02,619 va a ser un botón 481 00:21:02,619 --> 00:21:04,400 hola, un botón adiós 482 00:21:04,400 --> 00:21:06,579 y un componente en el que yo pueda 483 00:21:06,579 --> 00:21:07,640 escribir texto 484 00:21:07,640 --> 00:21:10,759 cuando le de a hola pues aparecerá hola 485 00:21:10,759 --> 00:21:12,380 y cuando le de a dios aparecerá dios 486 00:21:12,380 --> 00:21:13,640 por ejemplo y ya está 487 00:21:13,640 --> 00:21:16,759 vale, bueno pues entonces ya 488 00:21:16,759 --> 00:21:18,900 tenemos la idea de la interfaz 489 00:21:18,900 --> 00:21:21,039 ahora ya vamos a construirla 490 00:21:21,039 --> 00:21:23,380 lo primero que necesitamos 491 00:21:23,380 --> 00:21:24,119 si o si 492 00:21:24,119 --> 00:21:26,440 es un objeto 493 00:21:26,440 --> 00:21:28,339 de tipo 494 00:21:28,339 --> 00:21:30,480 jframe que es el básico 495 00:21:30,480 --> 00:21:32,240 vale 496 00:21:32,240 --> 00:21:35,440 pero un JFrame tal cual 497 00:21:35,440 --> 00:21:35,900 me vale 498 00:21:35,900 --> 00:21:38,640 un frame así sin más 499 00:21:38,640 --> 00:21:49,779 pues hombre, un JFrame 500 00:21:49,779 --> 00:21:51,359 veis que se importa de aquí 501 00:21:51,359 --> 00:21:53,559 un JFrame así sin más 502 00:21:53,559 --> 00:21:55,299 pues no me vale 503 00:21:55,299 --> 00:21:56,200 porque 504 00:21:56,200 --> 00:21:59,400 vale, yo lo puedo instanciar 505 00:21:59,400 --> 00:22:02,059 lo puedo crear y lo puedo hacer 506 00:22:02,059 --> 00:22:02,539 visible 507 00:22:02,539 --> 00:22:05,480 con el método setVisible 508 00:22:05,480 --> 00:22:06,700 a true 509 00:22:06,700 --> 00:22:09,960 vale, pues habré creado 510 00:22:09,960 --> 00:22:11,720 un frame, lo habré hecho visible 511 00:22:11,720 --> 00:22:14,160 pero este frame no es el que estoy buscando 512 00:22:14,160 --> 00:22:16,059 ¿no? bueno, le vamos a dar 513 00:22:16,059 --> 00:22:17,660 un tamaño, pues le damos un tamaño 514 00:22:17,660 --> 00:22:19,359 el frame 515 00:22:19,359 --> 00:22:21,660 vamos a ver qué frame me aparece aquí 516 00:22:21,660 --> 00:22:25,779 ¡qué pequeñajo! 517 00:22:27,299 --> 00:22:28,640 vamos a darle un tamaño 518 00:22:28,640 --> 00:22:32,210 frame. 519 00:22:32,210 --> 00:22:32,390 frame. 520 00:22:34,650 --> 00:22:35,809 setSize 521 00:22:35,809 --> 00:22:37,390 setShape, no 522 00:22:37,390 --> 00:22:40,190 ¿le puedo darle redondito? no lo puedo creer, ¿en serio? 523 00:22:41,130 --> 00:22:42,069 bueno, igual le puedo 524 00:22:42,069 --> 00:22:43,849 hacer redondo si tiene un setShape 525 00:22:43,849 --> 00:22:49,589 set size 526 00:22:49,589 --> 00:22:51,650 100, 100 527 00:22:51,650 --> 00:22:53,509 vale, pues yo mi main 528 00:22:53,509 --> 00:22:59,029 pulgadas 529 00:22:59,029 --> 00:23:01,930 son muchas, ¿verdad? 530 00:23:04,329 --> 00:23:06,470 es que píxeles es muy poco, ¿no? 531 00:23:06,470 --> 00:23:07,950 no, no, no, eso es por título 532 00:23:07,950 --> 00:23:10,710 es en píxel, ¿verdad? 533 00:23:10,990 --> 00:23:11,769 sí, es en píxel 534 00:23:11,769 --> 00:23:18,559 vale, bueno, vais a notar 535 00:23:18,559 --> 00:23:20,640 que a mí lo de las interfaces gráficas 536 00:23:20,640 --> 00:23:21,980 me la trae bastante floja 537 00:23:21,980 --> 00:23:25,579 me refiero 538 00:23:25,579 --> 00:23:26,839 que no es algo 539 00:23:26,839 --> 00:23:28,000 en lo que yo haya 540 00:23:28,000 --> 00:23:30,099 investigado nunca 541 00:23:30,099 --> 00:23:32,920 porque es que no me aporta mucho en mi vida 542 00:23:32,920 --> 00:23:34,819 aparte, vale, lo digo porque 543 00:23:34,819 --> 00:23:35,740 aquí sois vosotros 544 00:23:35,740 --> 00:23:39,079 aquí sois vosotros los que tenéis que investigar 545 00:23:39,079 --> 00:23:39,720 y 546 00:23:39,720 --> 00:23:42,240 me refiero 547 00:23:42,240 --> 00:23:44,660 aquí cualquier cosa que os inspire curiosidad 548 00:23:44,660 --> 00:23:46,859 adelante con vuestra curiosidad 549 00:23:46,859 --> 00:23:48,180 ¿vale? 550 00:23:48,299 --> 00:23:50,240 adelante con vuestra curiosidad, yo os voy a examinar eso sí 551 00:23:50,240 --> 00:23:50,940 de lo que yo os cuente 552 00:23:50,940 --> 00:23:54,099 pero cualquier cosa que os inspire curiosidad, pues venga 553 00:23:54,099 --> 00:23:55,480 no la cercenéis 554 00:23:55,480 --> 00:23:57,759 y si luego encima lo contéis a los demás, fenomenal 555 00:23:57,759 --> 00:24:00,099 vale, pues ya está, yo con esto 556 00:24:00,099 --> 00:24:02,259 he hecho mi primera interfaz gráfica 557 00:24:02,259 --> 00:24:03,680 pero sí, preciosa 558 00:24:03,680 --> 00:24:06,279 pero es que yo quería que aquí hubiera dos botones 559 00:24:06,279 --> 00:24:08,140 y un espacio 560 00:24:08,140 --> 00:24:09,720 para texto, aquí no hay nada 561 00:24:09,720 --> 00:24:11,900 con lo cual este frame, muy bonito 562 00:24:11,900 --> 00:24:12,579 pero no me vale 563 00:24:12,579 --> 00:24:14,619 vale 564 00:24:14,619 --> 00:24:17,420 entonces fijaos 565 00:24:17,420 --> 00:24:18,660 que yo me creo 566 00:24:18,660 --> 00:24:21,240 que he cerrado el programa dándole a la X 567 00:24:21,240 --> 00:24:23,839 y no he cerrado el programa, he cerrado la ventana 568 00:24:23,839 --> 00:24:25,940 pero aquí sigue mi botoncito rojo 569 00:24:25,940 --> 00:24:27,200 mi proceso no ha acabado 570 00:24:27,200 --> 00:24:29,140 ¿os dais cuenta? 571 00:24:30,660 --> 00:24:32,319 y sigue, y el otro que he cerrado también 572 00:24:32,319 --> 00:24:34,079 y el otro 573 00:24:34,079 --> 00:24:36,319 fijaos todos los que tengo aquí abiertos 574 00:24:36,319 --> 00:24:37,900 vale 575 00:24:37,900 --> 00:24:39,140 ¿os habéis dado cuenta de esto? 576 00:24:42,519 --> 00:24:42,900 ¿el qué? 577 00:24:43,980 --> 00:24:44,920 ¿Cómo, eh? 578 00:24:45,880 --> 00:24:47,039 ¿Qué ha pasado? 579 00:24:48,680 --> 00:24:49,900 ¿Os habéis dado cuenta de esto? 580 00:24:50,279 --> 00:24:51,319 He lanzado el programa. 581 00:24:52,920 --> 00:24:53,940 Lo lanzo. 582 00:24:55,240 --> 00:24:55,759 Vale. 583 00:24:56,079 --> 00:24:57,420 Y ahí está mi ventanita. 584 00:24:58,039 --> 00:24:59,859 Vale, que no me vale para nada porque no tiene 585 00:24:59,859 --> 00:25:01,039 los botones que yo quiero dar. 586 00:25:01,400 --> 00:25:02,480 Entonces yo no me vale. 587 00:25:03,359 --> 00:25:04,480 Y le doy a la X. 588 00:25:06,240 --> 00:25:07,700 He cerrado el programa, 589 00:25:07,799 --> 00:25:09,099 el proceso, no he cerrado nada. 590 00:25:09,859 --> 00:25:11,440 Lo que he hecho es 591 00:25:11,440 --> 00:25:13,039 hacer desaparecer el frame. 592 00:25:13,039 --> 00:25:14,980 Pero mi programa aquí sigue 593 00:25:14,980 --> 00:25:16,660 De hecho aquí está 594 00:25:16,660 --> 00:25:19,119 Esta cosa roja y aquí no pone terminate 595 00:25:19,119 --> 00:25:20,359 En ningún momento 596 00:25:20,359 --> 00:25:23,579 Entonces el proceso sigue ahí 597 00:25:23,579 --> 00:25:25,680 Claro 598 00:25:25,680 --> 00:25:27,259 Es como el set visible 599 00:25:27,259 --> 00:25:28,240 Lo he vuelto a poner a false 600 00:25:28,240 --> 00:25:31,500 Y ahora es que no la puedo volver a hacer aparecer 601 00:25:31,500 --> 00:25:32,880 Porque la ventana 602 00:25:32,880 --> 00:25:33,859 La interfaz ha desaparecido 603 00:25:33,859 --> 00:25:34,859 Es que no tengo opción 604 00:25:34,859 --> 00:25:39,180 Uy de verdad me vas a hacer 605 00:25:39,180 --> 00:25:39,960 Que debugue 606 00:25:39,960 --> 00:25:42,240 Debugue a tu vale 607 00:25:42,240 --> 00:25:45,559 vale 608 00:25:45,559 --> 00:25:47,599 entonces 609 00:25:47,599 --> 00:25:50,359 primera cosa que quiero que tengáis en cuenta 610 00:25:50,359 --> 00:25:52,500 cerrar la interfaz no significa que el proceso 611 00:25:52,500 --> 00:25:53,099 haya parado 612 00:25:53,099 --> 00:25:55,779 lo he tenido que forzar así a lo bestia 613 00:25:55,779 --> 00:25:58,940 claro, es que ahora mismo estoy programando en plan patatero 614 00:25:58,940 --> 00:26:00,599 luego lo que haremos es 615 00:26:00,599 --> 00:26:02,740 incorporar una sentencia que asocie 616 00:26:02,740 --> 00:26:04,579 darle a la X con cerrar el proceso 617 00:26:04,579 --> 00:26:06,640 y todas esas cosas hay que depurarlas 618 00:26:06,640 --> 00:26:08,299 claro, vale 619 00:26:08,299 --> 00:26:12,450 vale, pues primera cosa 620 00:26:12,450 --> 00:26:14,089 este frame no me gusta 621 00:26:14,089 --> 00:26:15,750 vale, pues entonces 622 00:26:15,750 --> 00:26:17,549 vamos a construirnos 623 00:26:17,549 --> 00:26:19,190 uno que herede de este 624 00:26:19,190 --> 00:26:21,470 y que ya sí que tenga lo que yo quiero 625 00:26:21,470 --> 00:26:23,150 este no me gusta 626 00:26:23,150 --> 00:26:24,990 vale, pues me voy a construir uno 627 00:26:24,990 --> 00:26:27,990 me voy a construir uno 628 00:26:27,990 --> 00:26:29,970 mi ventana, por ejemplo 629 00:26:29,970 --> 00:26:33,250 mi ventana 630 00:26:33,250 --> 00:26:34,670 como lo queréis llamar 631 00:26:34,670 --> 00:26:37,809 mi ventanita 632 00:26:37,809 --> 00:26:44,079 ah, eso lo vamos a hacer 633 00:26:44,079 --> 00:26:45,579 que siempre me gusta hacerlo 634 00:26:45,579 --> 00:26:47,579 Que según le vas dando la X te la mueva 635 00:26:47,579 --> 00:26:48,819 Y entonces te vas a ir persiguiendo 636 00:26:48,819 --> 00:26:52,660 Pues eso 637 00:26:52,660 --> 00:26:54,619 Podemos hacer muchos puteos 638 00:26:54,619 --> 00:26:56,039 Vale 639 00:26:56,039 --> 00:26:59,000 Ha sido sincero 640 00:26:59,000 --> 00:26:59,339 Venga 641 00:26:59,339 --> 00:27:02,740 Venga, a ver 642 00:27:02,740 --> 00:27:03,859 Vamos a hacernos otro 643 00:27:03,859 --> 00:27:05,440 Porque el Jotaframe no nos gusta 644 00:27:05,440 --> 00:27:06,660 Vamos a hacernos otro 645 00:27:06,660 --> 00:27:07,140 Pero claro 646 00:27:07,140 --> 00:27:10,880 Queremos reutilizarlo 647 00:27:10,880 --> 00:27:11,759 Que ya está en Jotaframe 648 00:27:11,759 --> 00:27:14,079 Pues menos mal que somos unos 649 00:27:14,079 --> 00:27:15,740 expertos en la herencia 650 00:27:15,740 --> 00:27:17,640 y ahora nos vamos a hacer 651 00:27:17,640 --> 00:27:19,960 bueno 652 00:27:19,960 --> 00:27:26,910 si me podrás dar un braguetazo 653 00:27:26,910 --> 00:27:30,670 y heredar 654 00:27:30,670 --> 00:27:31,789 de la pensión de viudedad 655 00:27:31,789 --> 00:27:34,230 vale, pues vamos a heredar de 656 00:27:34,230 --> 00:27:35,450 este 657 00:27:35,450 --> 00:27:38,029 y ahora ya tenemos 658 00:27:38,029 --> 00:27:44,490 ya tenemos 659 00:27:44,490 --> 00:27:45,789 un frame 660 00:27:45,789 --> 00:27:50,829 que tiene todo lo de frame y ahora aquí ya podemos poner lo 661 00:27:50,829 --> 00:27:51,529 que nos dé la gana. 662 00:27:52,009 --> 00:27:54,130 Aquí ya ponemos lo que queramos, ¿vale? 663 00:27:55,769 --> 00:27:58,210 O sea, la aplicación ahora mismo sigue siendo la misma. 664 00:27:58,309 --> 00:28:01,349 Si la vuelvo a ejecutar, sigue saliendo mi frame porque es que 665 00:28:01,349 --> 00:28:02,230 no la he personalizado. 666 00:28:02,349 --> 00:28:03,210 Está sin personalizar. 667 00:28:04,029 --> 00:28:04,890 Sigue siendo mi frame. 668 00:28:06,130 --> 00:28:09,710 Pero vamos a personalizarlo, ¿vale? 669 00:28:11,109 --> 00:28:11,549 ¿Vale? 670 00:28:11,569 --> 00:28:14,289 ¿En qué momento lo personalizamos? 671 00:28:14,289 --> 00:28:16,230 pues el momento de 672 00:28:16,230 --> 00:28:18,250 construirlo, cuando se construye 673 00:28:18,250 --> 00:28:19,690 pues vamos a poner el constructor 674 00:28:19,690 --> 00:28:28,019 ¿con quién hablas? 675 00:28:33,579 --> 00:28:33,839 vale 676 00:28:33,839 --> 00:28:36,640 esto, lo que 677 00:28:36,640 --> 00:28:37,319 pase aquí 678 00:28:37,319 --> 00:28:39,920 lo que yo ponga aquí 679 00:28:39,920 --> 00:28:42,359 lo que yo ponga aquí es lo que ocurre 680 00:28:42,359 --> 00:28:44,119 cuando hagamos este new, ¿verdad? 681 00:28:44,839 --> 00:28:46,599 cuando hagamos este new ocurrirá lo que 682 00:28:46,599 --> 00:28:48,579 yo ponga aquí, pues entonces aquí 683 00:28:48,579 --> 00:28:50,839 voy a poner, crear el botón 684 00:28:50,839 --> 00:28:52,819 ponerlo, etcétera, etcétera 685 00:28:52,819 --> 00:28:54,480 aquí, o bueno 686 00:28:54,480 --> 00:28:56,359 o lo puedo hacer si no quiero hacer un constructor 687 00:28:56,359 --> 00:28:58,440 muy feo, en un método 688 00:28:58,440 --> 00:28:59,759 adicional y lo llamo desde ahí. 689 00:29:00,160 --> 00:29:02,380 Por ejemplo, vamos a hacer un 690 00:29:02,380 --> 00:29:07,990 construye 691 00:29:07,990 --> 00:29:09,670 interfaz. 692 00:29:12,019 --> 00:29:12,880 Construye interfaz. 693 00:29:12,920 --> 00:29:14,799 Y a construir interfaz no tengo que llamar el constructor. 694 00:29:15,200 --> 00:29:16,079 Es que ahí no me escapo. 695 00:29:31,190 --> 00:29:32,609 Claro, claro. Es que yo no le he quitado 696 00:29:32,609 --> 00:29:33,609 el set visible, claro. 697 00:29:35,009 --> 00:29:36,990 claro, vale 698 00:29:36,990 --> 00:29:41,250 no, no, no, no, bueno yo puedo 699 00:29:41,250 --> 00:29:43,170 meter en el new el set visible y entonces 700 00:29:43,170 --> 00:29:45,289 lo tengo que poner fuera, vale, yo lo que 701 00:29:45,289 --> 00:29:47,190 he cambiado aquí respecto a la versión anterior es 702 00:29:47,190 --> 00:29:49,289 me he hecho un frame personalizado, pero luego le he 703 00:29:49,289 --> 00:29:51,230 seguido dando el tamaño que sea y haciéndolo 704 00:29:51,230 --> 00:29:52,970 visible, vale, entonces 705 00:29:52,970 --> 00:29:55,390 cuando hagamos el new mi ventana 706 00:29:55,390 --> 00:29:57,349 el new mi ventana, ese no me 707 00:29:57,349 --> 00:29:58,450 puede escapar, va a ir ahí 708 00:29:58,450 --> 00:30:01,509 entonces lo he hecho a través de un método auxiliar 709 00:30:01,509 --> 00:30:02,910 pero como si lo meto todo ahí dentro 710 00:30:02,910 --> 00:30:05,809 como luego vamos a usar el plugin 711 00:30:05,809 --> 00:30:07,670 para poder arrastrar y que no sea tan pesado 712 00:30:07,670 --> 00:30:09,730 pues el plugin 713 00:30:09,730 --> 00:30:11,230 si te lo meten un método auxiliar, etc 714 00:30:11,230 --> 00:30:13,470 vale, el consejo de interfaz 715 00:30:13,470 --> 00:30:15,670 ¿qué hemos dicho que queremos hacer? queremos dos botones 716 00:30:15,670 --> 00:30:17,589 uno para saludar y otro 717 00:30:17,589 --> 00:30:19,670 para despedirse, pues como 718 00:30:19,670 --> 00:30:21,190 ya me sé porque lo he usado mucho 719 00:30:21,190 --> 00:30:23,710 que el componente botón se llama jbutton 720 00:30:23,710 --> 00:30:25,329 pues ya está 721 00:30:25,329 --> 00:30:29,569 pues me lo instancio 722 00:30:29,569 --> 00:30:36,339 el constructor de JButton 723 00:30:36,339 --> 00:30:37,779 pues 724 00:30:37,779 --> 00:30:39,980 está sobrecargado pero admite 725 00:30:39,980 --> 00:30:42,220 que tú le des directamente el texto 726 00:30:42,220 --> 00:30:44,220 que quieres que vaya arriba, si no se lo pones después 727 00:30:44,220 --> 00:30:46,279 con un set test, como quiera 728 00:30:46,279 --> 00:30:48,119 pues este va a ser 729 00:30:48,119 --> 00:30:49,180 el botón de saludar 730 00:30:49,180 --> 00:30:52,579 importamos 731 00:30:52,579 --> 00:30:53,259 JButton 732 00:30:53,259 --> 00:30:58,059 y saludar como clase 733 00:30:58,059 --> 00:31:00,380 ya hecha que es, tiene un montón de métodos 734 00:31:00,380 --> 00:31:02,180 este botón para cambiarle 735 00:31:02,180 --> 00:31:04,259 colores, bordes, para hacerle un montón 736 00:31:04,259 --> 00:31:06,220 de mamonadas. Pero por ahora no le vamos 737 00:31:06,220 --> 00:31:07,319 a cambiar nada y ya está. 738 00:31:11,579 --> 00:31:13,920 Nuestra interfaz necesitaba dos, porque yo quiero 739 00:31:13,920 --> 00:31:15,359 tanto saludar como despedirme. 740 00:31:18,509 --> 00:31:19,329 Pues venga. 741 00:31:22,269 --> 00:31:23,190 Despedir, vale. 742 00:31:24,529 --> 00:31:25,829 Y hemos dicho que mi 743 00:31:25,829 --> 00:31:28,089 interfaz también necesita 744 00:31:28,089 --> 00:31:29,769 un área donde poder poner 745 00:31:29,769 --> 00:31:31,809 texto para que cuando yo 746 00:31:31,809 --> 00:31:33,750 dé a saludar en el texto me ponga hola 747 00:31:33,750 --> 00:31:35,450 y cuando dé a despedir, pues adiós. 748 00:31:35,450 --> 00:31:36,930 Vale, pues yo busco por ahí 749 00:31:36,930 --> 00:31:37,950 ¿Dónde puedo ponerte esto? 750 00:31:38,049 --> 00:31:39,710 Bueno, en muchos sitios 751 00:31:39,710 --> 00:31:41,930 Pero un sitio muy típico es una etiqueta 752 00:31:41,930 --> 00:31:44,630 Uno busca JLabel 753 00:31:44,630 --> 00:31:48,380 Vale, luego JFrame 754 00:31:48,380 --> 00:31:50,160 JButton, JLabel 755 00:31:50,160 --> 00:31:52,059 Ya no se nos puede olvidar, son los básicos 756 00:31:52,059 --> 00:31:52,819 Claro 757 00:31:52,819 --> 00:31:55,460 Esto y otros 758 00:31:55,460 --> 00:31:58,079 Solo 50 más 759 00:31:58,079 --> 00:31:59,339 Bien, bien 760 00:31:59,339 --> 00:32:01,700 Los 200.000 más que hay ya se quedan ahí 761 00:32:01,700 --> 00:32:02,839 Para que uno los busque cuando 762 00:32:02,839 --> 00:32:05,819 Vale, no, vamos a llegar a 50 rápido 763 00:32:05,819 --> 00:32:10,420 vamos a llegar pero nos vamos a acordar de los 50 764 00:32:10,420 --> 00:32:12,759 si porque tenéis unas memorias 765 00:32:12,759 --> 00:32:14,240 jóvenes y frescas 766 00:32:14,240 --> 00:32:20,119 JLabel pues ya está 767 00:32:20,119 --> 00:32:23,440 claro que hay que importarlo todo 768 00:32:23,440 --> 00:32:26,039 te van a quedar unos sim por ahora 769 00:32:26,039 --> 00:32:26,839 gigantescos 770 00:32:26,839 --> 00:32:29,859 vale 771 00:32:29,859 --> 00:32:33,359 bueno los objetos están 772 00:32:33,359 --> 00:32:35,359 instanciados 773 00:32:35,359 --> 00:32:37,660 pero no están pegados en ningún lado 774 00:32:37,660 --> 00:32:39,500 los tengo que pegar en la interfaz 775 00:32:39,500 --> 00:32:40,519 no están en ninguna parte 776 00:32:40,519 --> 00:32:43,400 los puedo pegar al frame directamente 777 00:32:43,400 --> 00:32:45,279 que en este caso sería el objeto dis 778 00:32:45,279 --> 00:32:47,079 porque estoy directamente en él 779 00:32:47,079 --> 00:32:49,839 los puedo pegar directamente dis 780 00:32:49,839 --> 00:32:51,359 añádele, pega 781 00:32:51,359 --> 00:32:53,339 el botón, saluda 782 00:32:53,339 --> 00:32:55,259 no 783 00:32:55,259 --> 00:32:57,539 no puedo al frame directamente ponérselos 784 00:32:57,539 --> 00:32:59,759 porque los componentes van en los contenedores 785 00:32:59,759 --> 00:33:01,599 vale, van en los contenedores 786 00:33:01,599 --> 00:33:03,339 el frame 787 00:33:03,339 --> 00:33:05,960 trae un contenedor principal por defecto 788 00:33:05,960 --> 00:33:06,420 siempre 789 00:33:06,420 --> 00:33:10,000 ese contenedor principal por defecto 790 00:33:10,000 --> 00:33:13,480 se saca a través del método 791 00:33:13,480 --> 00:33:14,720 getContentPanel 792 00:33:14,720 --> 00:33:19,650 getContentPanel es un método 793 00:33:19,650 --> 00:33:22,069 que te saca el contenedor por defecto 794 00:33:22,069 --> 00:33:23,250 que te trae cualquier frame 795 00:33:23,250 --> 00:33:25,849 no hace falta que hagas tú un jPanel específico 796 00:33:25,849 --> 00:33:27,450 y se lo pongas al frame, si no quieres 797 00:33:27,450 --> 00:33:28,950 puedes hacer muchos, secundarios 798 00:33:28,950 --> 00:33:30,849 pero él te trae ya uno por defecto 799 00:33:30,849 --> 00:33:33,150 tan grande como el propio frame 800 00:33:33,150 --> 00:33:35,150 a un panel le puedes poner otro panel 801 00:33:35,150 --> 00:33:37,529 claro, al contenedor por defecto lo normal es que tú 802 00:33:37,529 --> 00:33:39,690 a lo mejor le hicieras, pues cuatro paneles 803 00:33:39,690 --> 00:33:41,730 que haremos para diferentes cosas, pues insertar 804 00:33:41,730 --> 00:33:42,670 no sé qué, lo que toque 805 00:33:42,670 --> 00:33:45,710 vale, pues entonces a este que es el panel 806 00:33:45,710 --> 00:33:47,430 por defecto ya le podemos añadir cosas 807 00:33:47,430 --> 00:33:49,829 por ejemplo, vamos a añadirle 808 00:33:49,829 --> 00:33:50,990 el botón saluda 809 00:33:50,990 --> 00:33:54,970 vamos a añadirle 810 00:33:54,970 --> 00:33:56,730 ¿vale? añadirle botones 811 00:33:56,730 --> 00:33:59,150 ¿eh? 812 00:33:59,390 --> 00:34:00,670 puedes añadir botones 813 00:34:00,670 --> 00:34:02,190 cualquier componente 814 00:34:02,190 --> 00:34:04,529 cualquier cosa que sea componente 815 00:34:04,529 --> 00:34:09,480 le añadimos 816 00:34:09,480 --> 00:34:10,420 el otro 817 00:34:10,420 --> 00:34:17,010 eso, gracias 818 00:34:17,010 --> 00:34:22,210 venga 819 00:34:22,210 --> 00:34:25,170 y a este otro 820 00:34:25,170 --> 00:34:31,150 le añadimos ya la etiqueta 821 00:34:31,150 --> 00:34:37,780 pues ya está construida mi interfaz 822 00:34:37,780 --> 00:34:40,219 he instanciado los tres objetos 823 00:34:40,219 --> 00:34:43,500 y los he pegado al contenedor por defecto 824 00:34:43,500 --> 00:34:46,340 y ya no hay más que hacer aquí 825 00:34:46,340 --> 00:34:50,000 el frame una vez construido 826 00:34:50,000 --> 00:34:51,579 pues ya le daremos un tamaño 827 00:34:51,579 --> 00:34:52,320 y visible 828 00:34:52,320 --> 00:34:55,079 pues venga 829 00:34:55,079 --> 00:34:57,219 vamos a ejecutar esto 830 00:34:57,219 --> 00:34:59,599 y 831 00:34:59,599 --> 00:35:02,599 ¿qué? 832 00:35:02,599 --> 00:35:03,460 no me va 833 00:35:03,460 --> 00:35:05,739 ¿qué has hecho? 834 00:35:07,380 --> 00:35:09,099 hay que ponerlo en visible 835 00:35:09,099 --> 00:35:12,300 no, no, no 836 00:35:12,300 --> 00:35:15,860 ¿qué es lo que hemos hecho mal? 837 00:35:16,340 --> 00:35:19,400 que los hemos puesto a lo bestial 838 00:35:19,400 --> 00:35:21,760 ¿qué has preguntado tú antes de los gestores de ubicación? 839 00:35:24,159 --> 00:35:25,900 claro, que nos hemos puesto 840 00:35:25,900 --> 00:35:27,460 a añadir directamente las cosas 841 00:35:27,460 --> 00:35:28,199 ¿vale? 842 00:35:28,900 --> 00:35:31,719 y ¿qué ha hecho? 843 00:35:31,980 --> 00:35:32,900 las ha añadido 844 00:35:32,900 --> 00:35:34,980 pero como no hemos hecho gestor de ubicación 845 00:35:34,980 --> 00:35:37,880 si no hay gestor de ubicación, ni le hemos puesto aquí coordenadas 846 00:35:37,880 --> 00:35:38,320 ni nada 847 00:35:38,320 --> 00:35:42,300 ¿él qué hace? añade una encima de la otra 848 00:35:42,300 --> 00:35:44,519 se ve la etiqueta 849 00:35:44,519 --> 00:35:47,099 Sí, vamos a cambiar de hecho el orden 850 00:35:47,099 --> 00:35:49,159 Voy a poner la etiqueta 851 00:35:49,159 --> 00:35:51,699 ¿Se ve? Lo que pasa es que la etiqueta no tiene ningún texto 852 00:35:51,699 --> 00:35:52,960 Está vacía, por eso no la vemos 853 00:35:52,960 --> 00:35:55,880 Vamos a poner la etiqueta primero 854 00:35:55,880 --> 00:36:00,789 ¡Hala! Mira el cacho botón que está ahí 855 00:36:00,789 --> 00:36:05,849 Añadido uno encima del otro 856 00:36:05,849 --> 00:36:08,369 Y estirado al tamaño del contenedor 857 00:36:08,369 --> 00:36:11,969 He cambiado el orden 858 00:36:11,969 --> 00:36:13,230 Entonces primero la etiqueta 859 00:36:13,230 --> 00:36:15,849 luego el botón salude y luego el botón decide 860 00:36:15,849 --> 00:36:17,789 con lo cual lo único que he visto 861 00:36:17,789 --> 00:36:20,110 es lo último que he añadido 862 00:36:20,110 --> 00:36:22,849 porque están unos encima del otro 863 00:36:22,849 --> 00:36:27,809 tengo aquí 200.000 abierto 864 00:36:27,809 --> 00:36:35,559 vale 865 00:36:35,559 --> 00:36:36,539 un float 866 00:36:36,539 --> 00:36:39,719 con lo cual 867 00:36:39,719 --> 00:36:42,619 si no hay gestor de ubicación 868 00:36:42,619 --> 00:36:44,360 pone los componentes 869 00:36:44,360 --> 00:36:46,500 uno encima del otro y estirados 870 00:36:46,500 --> 00:36:48,400 al tamaño del contenedor. No nos vale para nada. 871 00:36:49,219 --> 00:36:50,300 ¿Vale? No nos vale para nada. 872 00:36:51,199 --> 00:36:52,360 Vale. Pero antes 873 00:36:52,360 --> 00:36:53,480 de poner el gestor de ubicación, 874 00:36:54,179 --> 00:36:56,380 vamos a llamar 875 00:36:56,380 --> 00:36:58,340 al método, darle la sentencia que necesita 876 00:36:58,340 --> 00:37:00,320 para que cuando le demos a la X, también cierre 877 00:37:00,320 --> 00:37:02,280 el programa. Pero es que si no, vais a 878 00:37:02,280 --> 00:37:04,260 tener que estar parando todo el rato con esto y es un 879 00:37:04,260 --> 00:37:05,639 rollo. ¿Vale? 880 00:37:06,199 --> 00:37:07,980 Porque no es plan de acumular miles de procesos. 881 00:37:08,340 --> 00:37:10,119 Entonces, vamos cuanto antes a incorporar eso y ya está. 882 00:37:10,980 --> 00:37:12,139 Entonces, hay 883 00:37:12,139 --> 00:37:14,019 un método para el frame 884 00:37:14,019 --> 00:37:16,059 mi frame dis 885 00:37:16,059 --> 00:37:18,460 que es el 886 00:37:18,460 --> 00:37:22,699 a ver 887 00:37:22,699 --> 00:37:24,639 como se llama ese método 888 00:37:24,639 --> 00:37:30,539 este, vale 889 00:37:30,539 --> 00:37:31,380 que es 890 00:37:31,380 --> 00:37:34,800 que acción quieres que ocurra cuando le des 891 00:37:34,800 --> 00:37:35,420 a la x 892 00:37:35,420 --> 00:37:37,599 pues queremos 893 00:37:37,599 --> 00:37:40,420 exit 894 00:37:40,420 --> 00:37:43,079 y esta exit es una macro 895 00:37:43,079 --> 00:37:43,619 de 896 00:37:43,619 --> 00:37:49,059 JFrame 897 00:37:49,059 --> 00:37:50,039 puede ser la macro 898 00:37:50,039 --> 00:37:53,599 de JFrame 899 00:37:53,599 --> 00:37:57,440 sí, exit on close 900 00:37:57,440 --> 00:37:58,400 se llama la macro, ¿verdad? 901 00:37:58,559 --> 00:37:59,980 exit on 902 00:37:59,980 --> 00:38:02,659 close se llama 903 00:38:02,659 --> 00:38:04,280 sí, vale 904 00:38:04,280 --> 00:38:06,199 vale 905 00:38:06,199 --> 00:38:09,519 sí 906 00:38:09,519 --> 00:38:14,539 no, no te tienes que acordar de todo 907 00:38:14,539 --> 00:38:15,880 luego ya veremos como no 908 00:38:15,880 --> 00:38:18,599 vale, esto es solamente 909 00:38:18,599 --> 00:38:19,880 para decirle al frame 910 00:38:19,880 --> 00:38:22,500 que cuando se le dé a la X 911 00:38:22,500 --> 00:38:24,840 cierre el proceso 912 00:38:24,840 --> 00:38:26,460 solo es para eso 913 00:38:26,460 --> 00:38:28,460 entonces 914 00:38:28,460 --> 00:38:30,440 incorporemoslo siempre porque si no 915 00:38:30,440 --> 00:38:33,000 entonces ahora ya cuando le demos a la X 916 00:38:33,000 --> 00:38:34,739 el proceso 917 00:38:34,739 --> 00:38:36,460 se cierra también, ya no tenemos que estar 918 00:38:36,460 --> 00:38:37,380 parándolo ahí todo el rato 919 00:38:37,380 --> 00:38:42,280 vale, bueno pues entonces 920 00:38:42,280 --> 00:38:44,059 estábamos con que 921 00:38:44,059 --> 00:38:47,139 el main no tiene nada 922 00:38:47,139 --> 00:38:48,519 no lo he cambiado 923 00:38:48,519 --> 00:38:50,880 el main es el del principio 924 00:38:50,880 --> 00:38:57,340 pues igual 925 00:38:57,340 --> 00:38:58,800 no estará 926 00:38:58,800 --> 00:39:02,460 vale pues venga 927 00:39:02,460 --> 00:39:04,719 vamos a hacernos un gestor de ubicación 928 00:39:04,719 --> 00:39:09,530 vamos a hacernos un gestor 929 00:39:09,530 --> 00:39:11,550 de ubicación patatero 930 00:39:11,550 --> 00:39:13,130 gestores de ubicación 931 00:39:13,130 --> 00:39:14,150 son objetos 932 00:39:14,150 --> 00:39:16,730 que los hay de diferentes tipos 933 00:39:16,730 --> 00:39:19,369 en función del tipo de colocación 934 00:39:19,369 --> 00:39:21,090 que tú quieras, como los quieras colocar 935 00:39:21,090 --> 00:39:23,150 por ejemplo 936 00:39:23,150 --> 00:39:25,349 vamos a suponer que queremos colocarlos 937 00:39:25,349 --> 00:39:27,230 en filita, uno tras otro 938 00:39:27,230 --> 00:39:29,590 pues si los queremos colocar en filita 939 00:39:29,590 --> 00:39:31,130 hay un gestor de ubicación 940 00:39:31,130 --> 00:39:33,510 que es el flow layout 941 00:39:33,510 --> 00:39:37,489 que es el objeto que se mete ahí 942 00:39:37,489 --> 00:39:39,010 y te los pone en filita 943 00:39:39,010 --> 00:39:41,130 pues venga, vamos a crear 944 00:39:41,130 --> 00:39:42,650 el gestor de ubicación este 945 00:39:42,650 --> 00:39:52,289 flow layout 946 00:39:52,289 --> 00:39:54,989 los gestores de ubicaciones 947 00:39:54,989 --> 00:39:56,550 vienen 948 00:39:56,550 --> 00:39:59,349 de este paquetito, del Java 949 00:39:59,349 --> 00:40:00,010 WT 950 00:40:00,010 --> 00:40:03,389 vale, Java WT es el 951 00:40:03,389 --> 00:40:05,250 primer paquete que se hizo 952 00:40:05,250 --> 00:40:07,329 de interfaces gráficas y los gestores 953 00:40:07,329 --> 00:40:09,070 de ubicaciones siguen siendo de él 954 00:40:09,070 --> 00:40:11,030 vale, pues entonces 955 00:40:11,030 --> 00:40:13,010 antes de colocar los componentes 956 00:40:13,010 --> 00:40:15,690 antes de colocarlos, vamos a coger el árbitro 957 00:40:15,690 --> 00:40:17,389 vamos a crearlo, que es el árbitro 958 00:40:17,389 --> 00:40:19,150 que es capaz de decir, no, no, poneros en fila 959 00:40:19,150 --> 00:40:20,809 uno tras otro, aquí nada, unos encima de otros 960 00:40:20,809 --> 00:40:23,250 no, en fila, pues creamos 961 00:40:23,250 --> 00:40:25,170 este objeto que es el capaz de ponerlos en fila 962 00:40:25,170 --> 00:40:47,409 Pero claro, hay que decirle al panel, oye tú, panel, tu árbitro de colocación va a ser este. Pues venga, vamos a decirle al panel con el que estamos trabajando, vamos a decirle que su layout sea ese. 963 00:40:47,409 --> 00:40:51,730 No hemos hecho una todavía 964 00:40:51,730 --> 00:40:55,570 Esto normalmente son 200.000 líneas de código 965 00:40:55,570 --> 00:41:00,110 Que no, que luego es muy rápido 966 00:41:00,110 --> 00:41:07,650 Hay un plugin para vagos 967 00:41:07,650 --> 00:41:09,909 Y ya 968 00:41:09,909 --> 00:41:13,789 Hablan tratándose de vosotros 969 00:41:13,789 --> 00:41:15,289 Pues habrá que usarlo 970 00:41:15,289 --> 00:41:18,710 Vale, pues esto 971 00:41:18,710 --> 00:41:19,929 Pero a ver 972 00:41:19,929 --> 00:41:22,809 Uno se puede permitir ser vago 973 00:41:22,809 --> 00:41:24,809 Cuando conoce 974 00:41:24,809 --> 00:41:26,909 Los principios de funcionamiento de cualquier cosa 975 00:41:26,909 --> 00:41:28,750 Entonces ya puede 976 00:41:28,750 --> 00:41:30,570 Vaguear y usar el chat GPT 977 00:41:30,570 --> 00:41:32,389 Usar a cualquier esclavo 978 00:41:32,389 --> 00:41:34,650 Se permite el uso de cualquier esclavo 979 00:41:34,650 --> 00:41:36,750 Cuando tú sabes los principios de funcionamiento 980 00:41:36,750 --> 00:41:37,170 De las cosas 981 00:41:37,170 --> 00:41:40,369 Y ahora estamos en la base de conocer los principios 982 00:41:40,369 --> 00:41:41,570 De funcionamiento de las cosas 983 00:41:41,570 --> 00:41:42,730 Vale, pues 984 00:41:42,730 --> 00:41:44,829 este tío 985 00:41:44,829 --> 00:41:46,929 lo creamos y le decimos 986 00:41:46,929 --> 00:41:48,829 al panel, este va a ser 987 00:41:48,829 --> 00:41:49,809 el que ponga orden 988 00:41:49,809 --> 00:41:52,289 vale, y ahora ya 989 00:41:52,289 --> 00:41:54,769 cuando ya le hemos dicho al panel quien es el que le pone orden 990 00:41:54,769 --> 00:41:55,489 los añadimos 991 00:41:55,489 --> 00:41:58,429 y ahora ya los vemos 992 00:41:58,429 --> 00:42:00,070 la etiqueta está aquí, aunque no la veamos 993 00:42:00,070 --> 00:42:02,650 la etiqueta está aquí 994 00:42:02,650 --> 00:42:04,670 y ya están 995 00:42:04,670 --> 00:42:06,309 en orden lo que tú les has dicho 996 00:42:06,309 --> 00:42:08,130 ¿y si agrandas el componente? 997 00:42:08,710 --> 00:42:10,349 no te agrandan los componentes 998 00:42:10,349 --> 00:42:12,250 no te agrandan. Te pone el tamaño 999 00:42:12,250 --> 00:42:12,730 por defecto. 1000 00:42:14,530 --> 00:42:16,349 Sí, porque el flow por defecto es 1001 00:42:16,349 --> 00:42:18,190 center. Le puedes, el 1002 00:42:18,190 --> 00:42:20,349 constructor este tiene sobrecarga, el constructor 1003 00:42:20,349 --> 00:42:22,269 pues para que sea north o otras cosas. 1004 00:42:24,329 --> 00:42:25,349 Porque no hay texto. 1005 00:42:26,409 --> 00:42:28,329 Es una etiqueta para contener texto 1006 00:42:28,329 --> 00:42:29,070 pero todavía no lo tiene. 1007 00:42:30,570 --> 00:42:32,250 Entonces, este gestor de ubicación es muy 1008 00:42:32,250 --> 00:42:32,809 patatero. 1009 00:42:35,750 --> 00:42:36,190 Podríamos. 1010 00:42:37,650 --> 00:42:38,090 ¿Vale? 1011 00:42:40,349 --> 00:42:56,329 Podríamos, ¿qué otra opción para colocar componentes he dicho antes que podemos usar? 1012 00:42:57,110 --> 00:43:00,710 Pasar de los gestores de ubicación, pasar de ellos y colocarlos a mano. 1013 00:43:01,489 --> 00:43:04,949 Una opción podría ser, paso de los gestores de ubicación y los coloco a mano. 1014 00:43:04,949 --> 00:43:05,969 entonces 1015 00:43:05,969 --> 00:43:09,409 en lugar de darle un gestor de ubicación 1016 00:43:09,409 --> 00:43:10,710 le diríamos 1017 00:43:10,710 --> 00:43:13,409 no tienes gestor de ubicación y tienes nada 1018 00:43:13,409 --> 00:43:14,769 hay un por defecto 1019 00:43:14,769 --> 00:43:19,760 hay un, no hay gestor de ubicación 1020 00:43:19,760 --> 00:43:21,900 pero entonces 1021 00:43:21,900 --> 00:43:23,860 ahora tienes que 1022 00:43:23,860 --> 00:43:24,639 decirle 1023 00:43:24,639 --> 00:43:27,199 colócate aquí 1024 00:43:27,199 --> 00:43:29,980 aquí con ancho esto 1025 00:43:29,980 --> 00:43:31,139 y ancho esto 1026 00:43:31,139 --> 00:43:31,920 ¿vale? 1027 00:43:34,000 --> 00:43:34,840 bueno 1028 00:43:34,840 --> 00:43:43,739 aquí es que es un lío 1029 00:43:43,739 --> 00:43:46,480 hay que meterlo con el objeto 1030 00:43:46,480 --> 00:43:48,340 aquí, a ver 1031 00:43:48,340 --> 00:43:50,019 en saluda 1032 00:43:50,019 --> 00:43:51,500 en el botoncito saluda 1033 00:43:51,500 --> 00:43:54,340 tú le puedes poner 1034 00:43:54,340 --> 00:43:56,960 set bounce 1035 00:43:56,960 --> 00:43:59,579 ¿veis? hay un set bounce 1036 00:43:59,579 --> 00:44:01,280 y tú aquí le pones 1037 00:44:01,280 --> 00:44:04,579 le pones en set bounce 1038 00:44:04,579 --> 00:44:06,699 le dices 1039 00:44:06,699 --> 00:44:09,000 pues 1040 00:44:09,000 --> 00:44:10,559 10 1041 00:44:10,559 --> 00:44:13,119 10 1042 00:44:13,119 --> 00:44:15,099 10 y 10 y a ver donde nos lo pone 1043 00:44:15,099 --> 00:44:21,320 y vamos a ponerle a los otros también 1044 00:44:21,320 --> 00:44:22,320 porque si no 1045 00:44:22,320 --> 00:44:29,320 despide.setbounds 1046 00:44:29,320 --> 00:44:31,019 set bounds 1047 00:44:31,019 --> 00:44:39,179 es Irene 1048 00:44:39,179 --> 00:44:40,239 perdonad 1049 00:44:40,239 --> 00:44:42,119 un segundito