1 00:00:00,430 --> 00:00:11,050 Vale, estoy grabando, por lo tanto si habláis me estáis dando vuestro consentimiento a que se grabe vuestra voz 2 00:00:11,050 --> 00:00:16,109 Entonces, lo que vamos a empezar hoy es interfaces gráficas 3 00:00:16,109 --> 00:00:20,269 Y hemos dicho más o menos que es esto de la interfaz gráfica 4 00:00:20,269 --> 00:00:29,609 Es sostancialmente tener una serie de elementos que yo pueda utilizar como botones, como campo de textos, como área de texto y cosas por el estilo 5 00:00:29,609 --> 00:00:35,450 que permitan sustancialmente transformar mis programas, los programas que he hecho hasta ahora, 6 00:00:35,570 --> 00:00:42,350 porque todo lo que hemos hecho hasta ahora se podría seguir haciendo así, pero no es muy amigable para el usuario. 7 00:00:43,469 --> 00:00:51,070 Nosotros cuando utilizamos teclado, cuando utilizamos línea de texto, siempre es algo un poquito más engorroso, 8 00:00:51,149 --> 00:00:58,409 se necesita más conocimiento, se necesita a lo mejor un teclado o algo por el estilo que es más complejo de utilizar 9 00:00:58,409 --> 00:01:01,310 En algunos contextos, en algunos entornos 10 00:01:01,310 --> 00:01:04,209 Por lo tanto, para que esto sea más fácil 11 00:01:04,209 --> 00:01:06,730 Y para que también gente que no sea informática 12 00:01:06,730 --> 00:01:08,269 Pueda utilizar nuestros programas 13 00:01:08,269 --> 00:01:10,849 Se suele dotar de una interfaz gráfica 14 00:01:10,849 --> 00:01:11,049 ¿Vale? 15 00:01:11,129 --> 00:01:14,750 Eso es lo mismo que pasa con los sistemas operativos 16 00:01:14,750 --> 00:01:16,569 Windows, al fin y al cabo 17 00:01:16,569 --> 00:01:18,930 Es una gran interfaz gráfica 18 00:01:18,930 --> 00:01:20,549 De lo que es el CMD 19 00:01:20,549 --> 00:01:22,049 Cuando vosotros sabéis el CMD 20 00:01:22,049 --> 00:01:25,730 Le dais comandos directamente al sistema operativo 21 00:01:25,730 --> 00:01:27,250 Con el intérprete de comandos 22 00:01:27,250 --> 00:01:31,030 Pues esto era como estaban hechos los sistemas operativos antes 23 00:01:31,030 --> 00:01:34,930 El MS-DOS, algunos de vosotros a lo mejor lo habréis visto en algún lado 24 00:01:34,930 --> 00:01:36,390 Yo era el que lo utilizaba 25 00:01:36,390 --> 00:01:39,849 Pues era la intérprete de comandos y nada más 26 00:01:39,849 --> 00:01:43,569 A partir de Windows 3.11, en la rama de Windows 27 00:01:43,569 --> 00:01:45,569 Se empezaron a poner interfaces gráficas 28 00:01:45,569 --> 00:01:47,189 Hasta lo que utilizamos ahora 29 00:01:47,189 --> 00:01:50,810 Que es, sustancialmente, Windows casi entero con interfaces gráficas 30 00:01:50,810 --> 00:01:56,010 Podemos hacer, o sea, normalmente no utilizamos algo que no sean ventanas en Windows 31 00:01:56,010 --> 00:02:04,849 Teniendo en cuenta también que añadir interfaces gráficos siempre añade un nivel de complejidad a mi programa 32 00:02:04,849 --> 00:02:12,569 O sea, un programa que funcione sin interfaces gráficos posiblemente es más robusto que uno que tiene interfaces gráficos 33 00:02:12,569 --> 00:02:20,389 Interfaces gráficos no dejan de ser un programa, a su vez, es un programa para hacer un interfaz gráfico para otro programa 34 00:02:20,389 --> 00:02:22,050 Y por lo tanto si yo hago 35 00:02:22,050 --> 00:02:23,550 Si yo tengo el programa de base 36 00:02:23,550 --> 00:02:25,150 El que hace las cosas de verdad 37 00:02:25,150 --> 00:02:26,569 Que funciona perfectamente 38 00:02:26,569 --> 00:02:28,930 Y pongo un error en el interfaz gráfico 39 00:02:28,930 --> 00:02:31,729 Ahora tengo un error en mi programa general 40 00:02:31,729 --> 00:02:32,310 ¿Vale? 41 00:02:33,310 --> 00:02:36,629 Porque he añadido complejidad al programa original 42 00:02:36,629 --> 00:02:38,849 No sé si me entendéis con lo que quiero 43 00:02:38,849 --> 00:02:41,789 ¿Vale? 44 00:02:42,050 --> 00:02:43,710 Tened en cuenta también que 45 00:02:43,710 --> 00:02:46,569 Añadir estos niveles 46 00:02:46,569 --> 00:02:48,189 Y más programas y más códigos 47 00:02:48,189 --> 00:02:50,669 También me puedes poner a eventuales 48 00:02:50,669 --> 00:02:52,629 Vulnerabilidades a nivel de seguridad 49 00:02:52,629 --> 00:02:54,789 ¿Vale? Y a lo mejor he hecho un programa 50 00:02:54,789 --> 00:02:57,150 Súper seguro, luego le añado un interfaz gráfico 51 00:02:57,150 --> 00:02:58,930 Que utiliza algún tipo 52 00:02:58,930 --> 00:03:00,750 De librería o utiliza algún tipo 53 00:03:00,750 --> 00:03:02,569 De otro módulo hecho por otros 54 00:03:02,569 --> 00:03:04,569 Y que estos módulos con alguna razón 55 00:03:04,569 --> 00:03:06,669 Tienen algún problema de seguridad 56 00:03:06,669 --> 00:03:08,770 Y ahora mi programa tiene ese problema 57 00:03:08,770 --> 00:03:09,229 De seguridad 58 00:03:09,229 --> 00:03:12,789 Se intenta evitar, pero siempre está allí 59 00:03:12,789 --> 00:03:14,710 La posibilidad. Y la tercera cosa 60 00:03:14,710 --> 00:03:16,349 De tener en cuenta del interfaz gráficos 61 00:03:16,349 --> 00:03:18,830 Es que mientras que yo 62 00:03:18,830 --> 00:03:20,289 Por ejemplo en un sistema operativo 63 00:03:20,289 --> 00:03:23,409 Utilizo la línea de comando 64 00:03:23,409 --> 00:03:24,430 Típica en Linux 65 00:03:24,430 --> 00:03:25,770 ¿Habéis utilizado un poco de Linux? 66 00:03:26,289 --> 00:03:28,090 En Linux se hacen comandos grandes así 67 00:03:28,090 --> 00:03:30,590 Y tú en Linux puedes hacer lo que te da la gana 68 00:03:30,590 --> 00:03:33,310 Puedes hacer todo lo que te da la gana 69 00:03:33,310 --> 00:03:35,889 Con comandos gigantes 70 00:03:35,889 --> 00:03:37,150 Y súper complejos 71 00:03:37,150 --> 00:03:37,789 ¿Vale? 72 00:03:37,889 --> 00:03:40,750 Pero te permite hacer prácticamente todo 73 00:03:40,750 --> 00:03:42,169 En el momento que tú dices 74 00:03:42,169 --> 00:03:45,310 Vale, ahora yo hago una abstracción 75 00:03:45,310 --> 00:03:45,810 ¿Vale? 76 00:03:45,810 --> 00:03:48,569 Y creo una interfaz gráfica 77 00:03:48,569 --> 00:03:49,969 Por encima de lo que pueda hacer 78 00:03:49,969 --> 00:03:51,250 Mi sistema operativo debajo 79 00:03:51,250 --> 00:03:53,550 Estoy en un cierto sentido limitando 80 00:03:53,550 --> 00:03:55,789 Porque ahora te estoy creando una 81 00:03:55,789 --> 00:03:58,129 Interfaz gráfica, si mi interfaz gráfica 82 00:03:58,129 --> 00:03:59,870 Te permite hacer una determinada acción 83 00:03:59,870 --> 00:04:02,490 Pues el interfaz gráfica por debajo 84 00:04:02,490 --> 00:04:04,509 Lo traducirá en el comando gigante 85 00:04:04,509 --> 00:04:06,289 Que tengo que lanzar a mi sistema operativo 86 00:04:06,289 --> 00:04:06,949 Para que lo haga 87 00:04:06,949 --> 00:04:08,830 Si yo en el sistema operativo 88 00:04:08,830 --> 00:04:11,370 Por qué se me ha olvidado, por qué no quiero 89 00:04:11,370 --> 00:04:12,689 O por cualquier otra razón 90 00:04:12,689 --> 00:04:14,430 Perdón, en la interfaz gráfica 91 00:04:14,430 --> 00:04:16,810 No pongo la posibilidad de hacer algo 92 00:04:16,810 --> 00:04:18,730 Pues entonces ya 93 00:04:18,730 --> 00:04:20,290 Tú no sabes cómo hacerlo 94 00:04:20,290 --> 00:04:22,449 Porque no tienes acceso a lo que está detrás 95 00:04:22,449 --> 00:04:25,209 No sé si me explico lo que quiero decir 96 00:04:25,209 --> 00:04:25,430 ¿Vale? 97 00:04:25,610 --> 00:04:28,629 Es un poco la diferencia de filosofía fundamental 98 00:04:28,629 --> 00:04:30,230 Entre Windows y Linux 99 00:04:30,230 --> 00:04:31,110 En un cierto sentido 100 00:04:31,110 --> 00:04:33,930 En el sentido Windows es muy fácil de utilizar 101 00:04:33,930 --> 00:04:36,509 Pero cuando no te proporciona 102 00:04:36,509 --> 00:04:37,610 La forma de hacer algo 103 00:04:37,610 --> 00:04:38,990 Hacerlo es un infierno 104 00:04:38,990 --> 00:04:42,569 Mientras Linux hacer hasta la cosa más básica es un infierno 105 00:04:42,569 --> 00:04:44,110 Pero luego puedes hacer todo 106 00:04:44,110 --> 00:04:45,790 Cuando tú ya sabes utilizar Linux 107 00:04:45,790 --> 00:04:48,149 Es mucho más flexible con respecto a Windows 108 00:04:48,149 --> 00:04:53,699 También todos estos elementos 109 00:04:53,699 --> 00:04:55,660 De la interfaz gráfica, de botones 110 00:04:55,660 --> 00:04:57,459 Y cosas por el estilo, tenemos que 111 00:04:57,459 --> 00:04:59,500 Aprender a posicionarlos 112 00:04:59,500 --> 00:05:01,180 A organizarlos 113 00:05:01,180 --> 00:05:03,519 Para que salga una interfaz gráfica 114 00:05:03,519 --> 00:05:05,300 Que sea bonita 115 00:05:05,300 --> 00:05:07,480 Que sea fácil de utilizar 116 00:05:07,480 --> 00:05:08,980 ¿Vale? Y esto 117 00:05:08,980 --> 00:05:11,199 Es sustancialmente el concepto del layout 118 00:05:11,199 --> 00:05:13,339 De cómo dispongo 119 00:05:13,339 --> 00:05:15,160 Estos elementos que van a componer 120 00:05:15,160 --> 00:05:16,339 Mi interfaz gráfica 121 00:05:16,339 --> 00:05:18,439 Para que queden 122 00:05:18,439 --> 00:05:20,319 Fácilmente utilizables 123 00:05:20,319 --> 00:05:23,459 Hay algunas convenciones 124 00:05:23,459 --> 00:05:24,100 Y cosas por el estilo 125 00:05:24,100 --> 00:05:26,300 Que probablemente conocéis de Linux o Windows 126 00:05:26,300 --> 00:05:29,439 En plan, cuando yo tengo una interfaz gráfica 127 00:05:29,439 --> 00:05:31,680 Si quiero cerrar esta interfaz gráfica 128 00:05:31,680 --> 00:05:32,040 ¿Qué hago? 129 00:05:33,660 --> 00:05:35,220 La X arriba a la derecha 130 00:05:35,220 --> 00:05:36,660 Yo me hago una interfaz 131 00:05:36,660 --> 00:05:38,600 Donde pongo la X abajo a la izquierda 132 00:05:38,600 --> 00:05:39,879 Y lo estoy haciendo mal 133 00:05:39,879 --> 00:05:42,459 ¿Funciona? Sí, funciona perfectamente 134 00:05:42,459 --> 00:05:44,160 Se puede hacer 135 00:05:44,160 --> 00:05:51,300 Pero luego cuando un usuario llegara allí y dirá, quiero cerrar esto, pues empezará a mirar arriba a la derecha y no encontrará nada, ¿sí? 136 00:05:51,519 --> 00:05:53,899 Para hacer un ejemplo muy obvio, ¿vale? 137 00:05:54,139 --> 00:06:01,839 Otras cosas, si hay botones de guardar a forma de disquetito, que ahora ya no existe, ¿vale? 138 00:06:01,860 --> 00:06:03,959 Floppy disk de cuando yo era joven, ¿vale? 139 00:06:04,199 --> 00:06:07,139 Pues ahora mismo cuando tú quieres guardar, buscas ese icono allí. 140 00:06:07,139 --> 00:06:09,660 Si yo de repente te lo cambio de posición 141 00:06:09,660 --> 00:06:11,839 Y te pongo un bolígrafo 142 00:06:11,839 --> 00:06:13,720 Tú entras en el pánico 143 00:06:13,720 --> 00:06:14,980 Porque bolígrafo para ti es 144 00:06:14,980 --> 00:06:16,819 Editar 145 00:06:16,819 --> 00:06:20,079 Entonces, hay estos tipos de convenciones 146 00:06:20,079 --> 00:06:20,879 Y cosas por el estilo 147 00:06:20,879 --> 00:06:23,079 Aún así, nosotros no veremos muchas de esas 148 00:06:23,079 --> 00:06:25,160 Y haremos un poco la cosa como nos da la gana 149 00:06:25,160 --> 00:06:27,740 ¿Qué son las interfaces gráficas? 150 00:06:28,120 --> 00:06:30,339 Parte del programa que interactúa con el usuario 151 00:06:30,339 --> 00:06:32,500 Utilizando objetos gráficos e imágenes 152 00:06:32,500 --> 00:06:32,860 ¿Vale? 153 00:06:32,920 --> 00:06:34,779 Es bonito, es sustancialmente 154 00:06:34,779 --> 00:06:37,019 una capa más que yo añado 155 00:06:37,019 --> 00:06:39,439 a mi programa, mi programa está funcionando 156 00:06:39,439 --> 00:06:41,160 ya funcionaría en línea de comando 157 00:06:41,160 --> 00:06:43,319 perfecto, le pongo una capa por encima 158 00:06:43,319 --> 00:06:45,360 de abstracción para que esconda 159 00:06:45,360 --> 00:06:47,540 toda la parte aburrida 160 00:06:47,540 --> 00:06:49,079 que hay por debajo y la parte 161 00:06:49,079 --> 00:06:50,819 más técnicas y le ponga 162 00:06:50,819 --> 00:06:53,120 ventanitas y botoncitos fáciles 163 00:06:53,120 --> 00:06:55,019 para que el usuario pueda utilizar 164 00:06:55,019 --> 00:06:57,300 mi programa de forma más sencilla 165 00:06:57,300 --> 00:06:59,220 que no necesite ser un informático 166 00:06:59,220 --> 00:07:00,860 para poder utilizar el programa que estoy 167 00:07:00,860 --> 00:07:01,699 creando 168 00:07:01,699 --> 00:07:11,699 Proporcionan un entorno gráfico sencillo e intuitivo, evolucionan las líneas de comando y se suelen llamar GUI 169 00:07:11,699 --> 00:07:17,699 o no se como se pronuncia esto en ingles, GUI, no lo se, Graphical User Interface 170 00:07:17,699 --> 00:07:23,699 Como se construyen interfaces en Java? 171 00:07:23,699 --> 00:07:38,589 Hay un par de paquetes que se pueden utilizar que incluyen toda la información que nosotros necesitamos, en particular nosotros utilizaremos Swing. 172 00:07:38,589 --> 00:07:46,589 Tened en cuenta también que esto del mundo de los interfaces gráficos es el punto de evaluación y hay cosas más avanzadas para hacer esto. 173 00:07:46,589 --> 00:07:49,129 Esta es una cosa un poco básica 174 00:07:49,129 --> 00:07:51,189 Java probablemente no es 175 00:07:51,189 --> 00:07:53,029 El mejor lenguaje 176 00:07:53,029 --> 00:07:55,529 O el mejor entorno donde se proporcionan 177 00:07:55,529 --> 00:07:56,769 Cosas para hacer 178 00:07:56,769 --> 00:07:59,509 Ventanas y interfaces 179 00:07:59,509 --> 00:08:00,149 Bonitas 180 00:08:00,149 --> 00:08:02,649 Hay otros programas 181 00:08:02,649 --> 00:08:04,550 Y otros lenguajes y otros entornos 182 00:08:04,550 --> 00:08:05,889 Como .NET por ejemplo 183 00:08:05,889 --> 00:08:08,449 En DAW lo veréis el próximo año 184 00:08:08,449 --> 00:08:09,750 Donde posiblemente 185 00:08:09,750 --> 00:08:12,589 Es lo que más estáis familiarizados 186 00:08:12,589 --> 00:08:14,629 En Windows 187 00:08:14,629 --> 00:08:16,129 Por ejemplo con el tipo de ventanas 188 00:08:16,129 --> 00:08:17,850 Veréis que las ventanas que creemos ahora 189 00:08:17,850 --> 00:08:20,110 Gráficamente son un poco distintas 190 00:08:20,110 --> 00:08:20,829 Son un poco más feas 191 00:08:20,829 --> 00:08:24,829 Pero bueno, esto es para que sepáis 192 00:08:24,829 --> 00:08:26,149 Cómo programar 193 00:08:26,149 --> 00:08:28,350 Interfaces gráficas también desde Java 194 00:08:28,350 --> 00:08:29,389 Y desde la base 195 00:08:29,389 --> 00:08:30,410 Desde 196 00:08:30,410 --> 00:08:33,730 Programación pura 197 00:08:33,730 --> 00:08:35,570 Luego haremos un saltito adelante 198 00:08:35,570 --> 00:08:36,769 Veremos el window builder 199 00:08:36,769 --> 00:08:39,889 Que nos da una mano para hacer 200 00:08:39,889 --> 00:08:42,169 Interfaces bonitas, un poquito más bonitas 201 00:08:42,169 --> 00:08:44,210 Sin perder la vida en ello 202 00:08:44,210 --> 00:08:46,309 Pero por ahora estamos a un nivel 203 00:08:46,309 --> 00:08:46,590 De 204 00:08:46,590 --> 00:08:50,309 El más profundo posible 205 00:08:50,309 --> 00:08:52,490 Siempre manteniendo un nivel de abstracción 206 00:08:52,490 --> 00:08:54,210 Porque estamos en Java y estamos haciendo 207 00:08:54,210 --> 00:08:56,169 Interfaces, pero lo más profundo posible 208 00:08:56,169 --> 00:08:58,330 Para este tipo de cosas 209 00:08:58,330 --> 00:08:59,950 Antes de Swing 210 00:08:59,950 --> 00:09:01,789 Habría otro paquete que era 211 00:09:01,789 --> 00:09:02,990 AWT 212 00:09:02,990 --> 00:09:06,210 Del que hereda Swing 213 00:09:06,210 --> 00:09:07,169 En un cierto sentido 214 00:09:07,169 --> 00:09:10,610 Swing es la evolución del AWT 215 00:09:10,610 --> 00:09:12,389 El AWT 216 00:09:12,389 --> 00:09:13,730 Era el anterior 217 00:09:13,730 --> 00:09:16,190 Tenía mucha 218 00:09:16,190 --> 00:09:19,929 Integración 219 00:09:19,929 --> 00:09:22,009 Con lo que era el sistema operativo 220 00:09:22,009 --> 00:09:23,350 Por lo tanto 221 00:09:23,350 --> 00:09:25,889 Lo que se hizo es crear un nuevo 222 00:09:25,889 --> 00:09:28,470 Entorno, nuevos componentes 223 00:09:28,470 --> 00:09:30,409 Que fueran un poco más independientes 224 00:09:30,409 --> 00:09:32,210 Del sistema operativo que hay por debajo 225 00:09:32,210 --> 00:09:34,429 Porque una de las cosas más importantes 226 00:09:34,429 --> 00:09:36,330 De Java era intentar 227 00:09:36,330 --> 00:09:38,590 Ser independiente de la plataforma 228 00:09:38,590 --> 00:09:40,070 Tú haces un programa en Java 229 00:09:40,070 --> 00:09:41,850 Y luego lo ejecutas tanto en Linux 230 00:09:41,850 --> 00:09:43,289 Como en Windows, como en Solaris 231 00:09:43,289 --> 00:09:45,370 Como en IOX 232 00:09:45,370 --> 00:09:47,509 Y debería funcionar 233 00:09:47,509 --> 00:09:48,830 ¿Vale? Entonces un poquito así 234 00:09:48,830 --> 00:09:51,789 Aún así, algunos componentes 235 00:09:51,789 --> 00:09:53,750 En realidad, algunos contenedores 236 00:09:53,750 --> 00:09:56,049 Que veremos, contenedores de componentes 237 00:09:56,049 --> 00:09:57,309 Pues siguen siendo 238 00:09:57,309 --> 00:09:58,950 Del paquete AWT 239 00:09:58,950 --> 00:10:02,070 ¿Esto que nos interesa a nosotros en realidad? 240 00:10:02,409 --> 00:10:03,669 Pues simplemente cuando vamos a 241 00:10:03,669 --> 00:10:04,950 Importar las cosas 242 00:10:04,950 --> 00:10:07,269 Tenemos que importar 243 00:10:07,269 --> 00:10:08,870 Con el nombre correcto 244 00:10:08,870 --> 00:10:11,049 Si pertenecen al paquete swing 245 00:10:11,049 --> 00:10:12,809 Será javax.swing 246 00:10:12,809 --> 00:10:14,370 punto, lo que sea 247 00:10:14,370 --> 00:10:16,490 si importamos de AVT 248 00:10:16,490 --> 00:10:18,470 será Java punto AVT 249 00:10:18,470 --> 00:10:20,029 punto lo que sea, vale 250 00:10:20,029 --> 00:10:22,750 esto nos interesa relativamente poco 251 00:10:22,750 --> 00:10:24,750 porque normalmente, sabéis, botón 252 00:10:24,750 --> 00:10:26,169 izquierdo encima de 253 00:10:26,169 --> 00:10:28,409 la cosa que no funciona y te dice 254 00:10:28,409 --> 00:10:30,750 ¿cómo lo quieres solucionar? ¿importas esta 255 00:10:30,750 --> 00:10:33,009 y lo hace 256 00:10:33,009 --> 00:10:34,090 el Eclipse 257 00:10:34,090 --> 00:10:35,769 y no tengo problemas 258 00:10:35,769 --> 00:10:38,629 ejemplo de clases 259 00:10:38,629 --> 00:10:40,590 que están dentro de Javax Swing 260 00:10:40,590 --> 00:10:42,330 vale, es decir, este 261 00:10:42,330 --> 00:10:44,870 Este paquete, javax.swing 262 00:10:44,870 --> 00:10:46,049 Que contiene 263 00:10:46,049 --> 00:10:48,330 Pues estos son 264 00:10:48,330 --> 00:10:50,970 Elementos, componentes 265 00:10:50,970 --> 00:10:52,970 Que se puedan utilizar para hacer 266 00:10:52,970 --> 00:10:55,710 Interfaces 267 00:10:55,710 --> 00:10:55,990 ¿Vale? 268 00:10:56,169 --> 00:10:57,990 Por ejemplo está el jlabel 269 00:10:57,990 --> 00:11:01,250 Que serían prácticamente 270 00:11:01,250 --> 00:11:02,950 Etiquetas, es un componente 271 00:11:02,950 --> 00:11:04,009 Que no hace absolutamente nada 272 00:11:04,009 --> 00:11:06,610 Es para dar nombres a las cosas 273 00:11:06,610 --> 00:11:08,629 Obviamente si pensáis en una interfaz 274 00:11:08,629 --> 00:11:10,070 Lo que tenéis es un nombre 275 00:11:10,070 --> 00:11:11,110 Luego una casilla donde 276 00:11:11,110 --> 00:11:12,929 Un título digamos 277 00:11:12,929 --> 00:11:14,769 Y una casilla donde escribir algo 278 00:11:14,769 --> 00:11:16,950 Tú si tienes una casilla en blanco 279 00:11:16,950 --> 00:11:18,049 No sabes que poner allí 280 00:11:18,049 --> 00:11:19,669 Le pones delante edad 281 00:11:19,669 --> 00:11:21,809 Y sabes que dentro de esta casilla va edad 282 00:11:21,809 --> 00:11:24,049 Esa edad es una ley 283 00:11:24,049 --> 00:11:27,070 Entonces es para escribir cosas 284 00:11:27,070 --> 00:11:29,309 Pero como funcionalidad no tiene prácticamente ninguna 285 00:11:29,309 --> 00:11:31,370 Reboot button 286 00:11:31,370 --> 00:11:33,090 Es un botón 287 00:11:33,090 --> 00:11:34,529 Entonces es un cuadradito 288 00:11:34,529 --> 00:11:37,269 Donde tú lo clicas y él hará algo 289 00:11:37,269 --> 00:11:39,029 La cosa interesante 290 00:11:39,029 --> 00:11:40,990 Será luego ver como le hacemos 291 00:11:40,990 --> 00:11:41,789 Hacer las cosas 292 00:11:41,789 --> 00:11:44,710 Pero este de aquí me crea un componente 293 00:11:44,710 --> 00:11:46,309 Que es un cuadradito, un rectángulo 294 00:11:46,309 --> 00:11:47,750 Con escrito dentro un nombre 295 00:11:47,750 --> 00:11:50,649 De guardar, cargar 296 00:11:50,649 --> 00:11:52,950 De destruir todo 297 00:11:52,950 --> 00:11:53,669 Pues no lo sé 298 00:11:53,669 --> 00:11:55,029 Y cuando tú lo pinchas 299 00:11:55,029 --> 00:11:56,289 Veremos como lo hacemos 300 00:11:56,289 --> 00:11:59,750 JTextField es un campo de texto 301 00:11:59,750 --> 00:12:01,110 Un campo de una única línea 302 00:12:01,110 --> 00:12:05,450 JTextArea es una área de texto 303 00:12:05,450 --> 00:12:07,629 Normalmente un rectángulo más grande 304 00:12:07,629 --> 00:12:08,950 Donde hay varias líneas 305 00:12:08,950 --> 00:12:09,850 Donde se puede escribir 306 00:12:09,850 --> 00:12:11,289 Por ejemplo, pensar en un mail 307 00:12:11,289 --> 00:12:13,509 Podría ser el JTextField 308 00:12:13,509 --> 00:12:14,610 Donde está el 309 00:12:14,610 --> 00:12:16,629 Donde mando el mail 310 00:12:16,629 --> 00:12:19,669 Y el JTextArea 311 00:12:19,669 --> 00:12:23,169 Podría ser el texto del mail 312 00:12:23,169 --> 00:12:24,929 Tú das 313 00:12:24,929 --> 00:12:28,889 Luego está JTextBox 314 00:12:28,889 --> 00:12:31,009 Que sería una casilla de verificación 315 00:12:31,009 --> 00:12:33,590 Son los cuadraditos 316 00:12:33,590 --> 00:12:35,190 Cuando vosotros tenéis 317 00:12:35,190 --> 00:12:37,129 Una interfaz y tenéis esa cosa cuadrada 318 00:12:37,129 --> 00:12:38,710 Y pincháis y sale V 319 00:12:38,710 --> 00:12:40,990 Y que normalmente se puede solucionar más de una 320 00:12:40,990 --> 00:12:42,330 Pues es este aquí 321 00:12:42,330 --> 00:12:44,950 Os lo recordaré de HTML 322 00:12:44,950 --> 00:12:45,870 Mismas cosas 323 00:12:45,870 --> 00:12:48,850 JRadioButton 324 00:12:48,850 --> 00:12:49,950 Es el radio button 325 00:12:49,950 --> 00:12:52,870 Que es el redondito que normalmente tienes varios 326 00:12:52,870 --> 00:12:55,210 Y tú puedes elegir solo uno de ellos 327 00:12:55,210 --> 00:12:56,769 La diferencia entre estos dos 328 00:12:56,769 --> 00:13:01,090 JList son para hacer listas 329 00:13:01,090 --> 00:13:03,330 JScrollBar para que haya una barra 330 00:13:03,330 --> 00:13:05,649 De desplazamiento para que puedas bajar 331 00:13:05,649 --> 00:13:07,389 Si hay muchas líneas 332 00:13:07,389 --> 00:13:08,269 Y cosas por el estilo 333 00:13:08,269 --> 00:13:11,830 Estos son ejemplos de componentes que hay allí 334 00:13:11,830 --> 00:13:14,870 Algunos de ellos los veremos, algunos de ellos no los veremos 335 00:13:14,870 --> 00:13:17,129 Algunos son más avanzados, algunos son más sencillos 336 00:13:17,129 --> 00:13:20,190 Realmente nosotros empezaremos jugando con estos 337 00:13:20,190 --> 00:13:23,649 Jugando con botones, campos de texto 338 00:13:23,649 --> 00:13:26,889 Y cuando yo pincho el botón hace algo con este campo de texto 339 00:13:26,889 --> 00:13:29,529 Me lo escribe por pantalla, lo cambia, lo modifica 340 00:13:29,529 --> 00:13:34,070 Lo guarda o lo añade a un array o lo que sea 341 00:13:34,070 --> 00:13:48,389 La metáfora que se utiliza a la hora de crear un interfaz gráfico es la idea de que tengo una pared 342 00:13:48,389 --> 00:13:57,190 Y yo voy colocando en esta pared los varios componentes que yo tengo que posicionar 343 00:13:57,190 --> 00:14:04,529 Entonces, esta de aquí será una ventana, la pared sería una ventana del ordenador 344 00:14:04,529 --> 00:14:12,870 Y yo, cuando creo un nuevo objeto, tengo que decirle dónde quiero este nuevo objeto, dónde quiero este nuevo elemento. 345 00:14:13,289 --> 00:14:18,149 Esta foto podría ser un botón, esta de aquí podría ser un campo de texto, no lo sé. 346 00:14:18,750 --> 00:14:32,169 La idea es que yo pueda crear dentro de la pared otros paneles para que pueda organizar dentro de estos paneles los elementos en una determinada forma 347 00:14:32,169 --> 00:14:34,950 Y luego este panel ponerlo en la pared 348 00:14:34,950 --> 00:14:37,009 No sé si me explico lo que queda 349 00:14:37,009 --> 00:14:38,970 Y esto cuantas veces queráis 350 00:14:38,970 --> 00:14:42,289 Componiendo estas cosas de aquí 351 00:14:42,289 --> 00:14:44,669 O sea, tanto elementos metidos directamente en la pared 352 00:14:44,669 --> 00:14:48,289 Como paneles que puedan ayudarme a organizar 353 00:14:48,289 --> 00:14:50,929 Los elementos que están dentro de ese panel 354 00:14:50,929 --> 00:14:55,470 Pues lo que voy creando es zonas de mi interfaz gráfica 355 00:14:55,470 --> 00:14:58,350 Y con el tiempo, o sea, con un poco de curro 356 00:14:58,350 --> 00:15:00,470 Hacer la interfaz gráfica que yo quiero 357 00:15:00,470 --> 00:15:03,870 Tened en cuenta que las interfaces gráficas 358 00:15:03,870 --> 00:15:06,009 Las conocéis 359 00:15:06,009 --> 00:15:08,129 Porque todos habéis utilizado algo 360 00:15:08,129 --> 00:15:10,269 Un formulario, una aplicación 361 00:15:10,269 --> 00:15:10,830 Un algo 362 00:15:10,830 --> 00:15:13,950 Entonces tenéis más o menos en mente la idea 363 00:15:13,950 --> 00:15:15,629 Vosotros sabéis reconocer 364 00:15:15,629 --> 00:15:16,970 Un interfaz gráfico hecho bien 365 00:15:16,970 --> 00:15:18,570 De un interfaz gráfico hecho mal 366 00:15:18,570 --> 00:15:20,990 Si vosotros abrís una aplicación y os sale 367 00:15:20,990 --> 00:15:23,029 Alguien ha dicho IRPF 368 00:15:23,029 --> 00:15:24,129 Os sale 369 00:15:24,129 --> 00:15:26,950 Mil miles de campos 370 00:15:26,950 --> 00:15:28,669 Pequeñitos 371 00:15:28,669 --> 00:15:30,710 Con un montón de label 372 00:15:30,710 --> 00:15:32,750 Un botón escondido y cosas por el estilo 373 00:15:32,750 --> 00:15:34,909 Pues esta no es una interfaz gráfica 374 00:15:34,909 --> 00:15:35,230 Hecha aquí 375 00:15:35,230 --> 00:15:38,710 Entonces normalmente tienen que ser 376 00:15:38,710 --> 00:15:40,289 Relativamente limpias, tienen que ser 377 00:15:40,289 --> 00:15:42,990 Con no muchos 378 00:15:42,990 --> 00:15:44,509 Elementos dentro porque 379 00:15:44,509 --> 00:15:45,610 Si no se confunde el usuario 380 00:15:45,610 --> 00:15:48,490 Si la interfaz gráfica 381 00:15:48,490 --> 00:15:50,590 Es más compleja que escribirlo 382 00:15:50,590 --> 00:15:51,850 Directamente en línea de texto 383 00:15:51,850 --> 00:15:54,169 Habéis hecho un mal trabajo 384 00:15:54,169 --> 00:15:55,110 ¿Sí? 385 00:15:56,110 --> 00:15:57,570 Entonces esto es 386 00:15:57,570 --> 00:16:02,789 El equivalente sería que esta que era la pared ahora es una ventana 387 00:16:02,789 --> 00:16:07,090 En automático cuando creo una ventana se me crean estos botoncitos de aquí 388 00:16:07,090 --> 00:16:11,529 Que son los típicos de una ventana para cerrar, para minimizar, para maximizar 389 00:16:11,529 --> 00:16:15,649 Y luego aquí dentro una ventana siempre tiene un panel 390 00:16:15,649 --> 00:16:18,970 Un Jpanel, por defecto 391 00:16:18,970 --> 00:16:23,149 Donde cuando yo pongo los elementos, estos elementos se van colocando aquí 392 00:16:23,149 --> 00:16:30,870 Hay varias formas de colocar los elementos y dependen de lo que es el layout 393 00:16:30,870 --> 00:16:34,490 Yo puedo o decidir que no hay layout 394 00:16:34,490 --> 00:16:39,570 Entonces tengo que poner yo físicamente estos en algunas coordinadas 395 00:16:39,570 --> 00:16:42,750 Por ejemplo, puedo decir esta imagen tiene que ir en la coordinada y esta de aquí 396 00:16:42,750 --> 00:16:46,730 Las coordinadas empiezan siempre que arriba a la izquierda es 0,0 397 00:16:46,730 --> 00:16:52,649 Y entonces tengo que contar los píxeles y los píxeles para mover cuantos píxeles 398 00:16:52,649 --> 00:16:57,210 Con respecto a este punto de aquí, tiene que ir esta imagen 399 00:16:57,210 --> 00:17:03,929 Y si no, hay algunas formas de layout ya predefinidos 400 00:17:03,929 --> 00:17:07,470 Una forma de organizar los datos más o menos predefinida 401 00:17:07,470 --> 00:17:12,210 Y que me da, en vez de tener que estar contando los píxeles, zonas 402 00:17:12,210 --> 00:17:16,049 Por ejemplo, la zona aquí arriba, la zona aquí lateral, la zona abajo 403 00:17:16,049 --> 00:17:18,230 Y yo le digo, mira, este botón 404 00:17:18,230 --> 00:17:19,390 Me lo tienes que poner abajo 405 00:17:19,390 --> 00:17:21,910 Si añado un botón abajo 406 00:17:21,910 --> 00:17:23,589 Me pondrá un botón grande abajo 407 00:17:23,589 --> 00:17:24,609 En toda la zona 408 00:17:24,609 --> 00:17:26,450 Si yo quiero dos botones 409 00:17:26,450 --> 00:17:27,250 ¿Qué haré? 410 00:17:33,529 --> 00:17:35,089 Exacto, me creo un panel 411 00:17:35,089 --> 00:17:38,890 Dentro del panel le coloco los dos botones 412 00:17:38,890 --> 00:17:40,950 Y luego aquí abajo añado ese panel 413 00:17:40,950 --> 00:17:42,869 Easy 414 00:17:42,869 --> 00:17:45,029 Lo veremos 415 00:17:45,029 --> 00:17:49,069 Y aquí 416 00:17:49,069 --> 00:17:50,690 Un ejemplo 417 00:17:50,690 --> 00:17:57,650 ¿Vale? Entonces, este ejemplo casi ahora lo vamos a hacer físicamente 418 00:17:57,650 --> 00:18:00,089 Pero, o sea, con el eclipse 419 00:18:00,089 --> 00:18:03,910 Pero, sostancialmente, nosotros lo que utilizaremos es el JFrame 420 00:18:03,910 --> 00:18:08,329 ¿Vale? JFrame es una ventana, en un cierto sentido 421 00:18:08,329 --> 00:18:16,670 Cuando tú creas un frame, lo que estás creando es una ventana 422 00:18:16,670 --> 00:18:18,269 Se te abre una ventana vacía 423 00:18:18,269 --> 00:18:22,329 Teniendo en cuenta que normalmente 424 00:18:22,329 --> 00:18:24,369 Bueno, hay varias formas de hacer esto 425 00:18:24,369 --> 00:18:26,589 ¿Vale? Pero como lo intentaremos 426 00:18:26,589 --> 00:18:27,970 Hacer nosotros es que nuestro 427 00:18:27,970 --> 00:18:30,250 Código, nuestra clase 428 00:18:30,250 --> 00:18:32,390 Que será una ventana, lo que hace 429 00:18:32,390 --> 00:18:33,589 Es extender JFrame 430 00:18:33,589 --> 00:18:36,309 Entonces, cuando yo creo un objeto 431 00:18:36,309 --> 00:18:37,990 Ejemplo, estoy creando 432 00:18:37,990 --> 00:18:40,690 Un objeto JFrame y por lo tanto 433 00:18:40,690 --> 00:18:42,130 Me aparece una ventana 434 00:18:42,130 --> 00:18:44,450 Y en esta ventana 435 00:18:44,450 --> 00:18:46,369 Yo coloco todos los 436 00:18:46,369 --> 00:18:48,910 Elementos y algo 437 00:18:48,910 --> 00:18:50,750 Todas las funcionalidades que yo quiero 438 00:18:50,750 --> 00:18:52,490 ¿Vale? Extendiendo un GFrame 439 00:18:52,490 --> 00:18:54,029 Que es una ventana genérica 440 00:18:54,029 --> 00:18:55,789 Y haciendo mi 441 00:18:55,789 --> 00:18:58,529 Interfaz gráfica personalizada 442 00:18:58,529 --> 00:18:59,569 ¿Si? 443 00:19:02,450 --> 00:19:03,089 Normalmente 444 00:19:03,089 --> 00:19:05,109 El GFrame tiene un content pane 445 00:19:05,109 --> 00:19:06,589 Bueno, esto es un nombre 446 00:19:06,589 --> 00:19:07,650 Que es un GPanel 447 00:19:07,650 --> 00:19:10,750 Es el fondo de la pared, digamos así 448 00:19:10,750 --> 00:19:12,549 Que yo tengo que utilizar 449 00:19:12,549 --> 00:19:14,269 Para poderle añadir allí 450 00:19:14,269 --> 00:19:15,529 Las cosas que yo quiero 451 00:19:15,529 --> 00:19:28,430 ¿Qué puedo añadir allí? Elementos, componentes o otros paneles que han sido creados anteriormente con sus componentes organizados de alguna forma y yo le pego el panel allí. 452 00:19:28,430 --> 00:19:42,890 Es como si yo tengo un tablón de corcho, antes aquí me creo el layout de ese tablón de corcho poniendo las cosas como yo quiero y luego lo pongo en la pared en el sitio donde yo quiero dentro de la pared. 453 00:19:42,890 --> 00:19:51,119 Aquí vienen algunas 454 00:19:51,119 --> 00:19:52,039 Cosillas 455 00:19:52,039 --> 00:19:54,119 Interesantes 456 00:19:54,119 --> 00:19:57,119 Esta de aquí, que dice 457 00:19:57,119 --> 00:19:59,019 Sustancialmente cuando yo 458 00:19:59,019 --> 00:20:00,680 Creo un frame 459 00:20:00,680 --> 00:20:02,000 Este frame es invisible 460 00:20:02,000 --> 00:20:04,859 Y normalmente la buena práctica 461 00:20:04,859 --> 00:20:06,839 Me dice que yo pillo mi frame 462 00:20:06,839 --> 00:20:08,579 Lo construyo entero 463 00:20:08,579 --> 00:20:10,519 Y una vez que he construido entero 464 00:20:10,519 --> 00:20:12,859 Le he añadido las cosas, le he añadido todo lo que tenía que ser 465 00:20:12,859 --> 00:20:15,140 A ese punto lo hago visible 466 00:20:15,140 --> 00:20:16,859 Para hacerlo visible 467 00:20:16,859 --> 00:20:19,859 Frame.setVisible 468 00:20:19,859 --> 00:20:20,599 4 469 00:20:20,599 --> 00:20:22,339 ¿Si? 470 00:20:22,519 --> 00:20:24,579 Esto debería ser 471 00:20:24,579 --> 00:20:26,420 Un comando que yo hago 472 00:20:26,420 --> 00:20:29,319 Cuando ya he hecho todo lo que quería hacer 473 00:20:29,319 --> 00:20:31,319 Para crear mi interfaz gráfica 474 00:20:31,319 --> 00:20:31,799 ¿Si? 475 00:20:32,160 --> 00:20:33,519 No al principio, al final 476 00:20:33,519 --> 00:20:35,859 ¿Dudas? 477 00:20:36,779 --> 00:20:38,140 Vamos a verlo en acción 478 00:20:38,140 --> 00:20:40,940 ¡Opa! 479 00:20:40,940 --> 00:21:02,980 Me voy al Eclipse, me creo un nuevo proyecto Java, lo llamo Windows 1, y aquí me creo una nueva clase. 480 00:21:06,650 --> 00:21:08,509 La clase la llamaré principal. 481 00:21:15,640 --> 00:21:21,960 Esta es la clase principal, que es la que inicia al principio. 482 00:21:21,960 --> 00:21:24,059 vale, entonces yo aquí 483 00:21:24,059 --> 00:21:25,960 le puedo hacer por ejemplo 484 00:21:25,960 --> 00:21:28,059 jframe 485 00:21:28,059 --> 00:21:29,460 win 486 00:21:29,460 --> 00:21:31,960 es igual a new jframe 487 00:21:31,960 --> 00:21:35,940 se me enfada porque 488 00:21:35,940 --> 00:21:38,160 jframe no existe, le digo importar 489 00:21:38,160 --> 00:21:39,460 jframe de javaswim 490 00:21:39,460 --> 00:21:41,680 y ahora existe 491 00:21:41,680 --> 00:21:44,299 he creado un nuevo objeto 492 00:21:44,299 --> 00:21:45,400 jframe 493 00:21:45,400 --> 00:21:46,900 lo lanzo 494 00:21:46,900 --> 00:21:49,059 y voilà 495 00:21:49,059 --> 00:21:51,799 la nada 496 00:21:51,799 --> 00:21:53,500 Porque 497 00:21:53,500 --> 00:21:59,549 Probablemente no es visible 498 00:21:59,549 --> 00:22:00,829 Vale, win 499 00:22:00,829 --> 00:22:02,430 Punto 500 00:22:02,430 --> 00:22:05,569 Set visible 501 00:22:05,569 --> 00:22:06,710 A true 502 00:22:06,710 --> 00:22:10,829 Dale ahora 503 00:22:10,829 --> 00:22:13,349 Aguita 504 00:22:13,349 --> 00:22:15,289 Mi fantástica 505 00:22:15,289 --> 00:22:17,529 Micro ventana 506 00:22:17,529 --> 00:22:18,349 Que no puedo abrir 507 00:22:18,349 --> 00:22:18,609 Ahí 508 00:22:18,609 --> 00:22:22,529 Claro, porque yo he creado una ventana 509 00:22:22,529 --> 00:22:24,089 No le he dicho el tamaño 510 00:22:24,089 --> 00:22:25,529 No le he dicho donde crearla 511 00:22:25,529 --> 00:22:26,789 No le he dicho como se llama 512 00:22:26,789 --> 00:22:28,170 No le he dicho absolutamente nada 513 00:22:28,170 --> 00:22:30,470 Y él lo que me hace es crearme una ventanita 514 00:22:30,470 --> 00:22:31,750 Ahí 515 00:22:31,750 --> 00:22:34,470 ¡Voilá! Ya tenéis vuestra interfaz 516 00:22:34,470 --> 00:22:38,170 ¿Sí? Venga, ejercicios, mañana examen 517 00:22:38,170 --> 00:22:39,390 Eh... 518 00:22:39,390 --> 00:22:41,910 Puede hacer cosas con esto, ¿vale? 519 00:22:42,130 --> 00:22:44,450 Entonces vamos a hacer cosillas 520 00:22:44,450 --> 00:22:47,170 Como por ejemplo, fijaos en una cosa importante 521 00:22:47,170 --> 00:22:48,289 Ah, no tengo la consola 522 00:22:48,289 --> 00:22:51,470 Cuando vosotros cerráis esto 523 00:22:51,470 --> 00:22:58,569 Fijaos aquí 524 00:22:58,569 --> 00:23:02,759 Chan, chan, chan, chan 525 00:23:02,759 --> 00:23:04,839 ¿Qué quiere decir esto? 526 00:23:06,500 --> 00:23:08,240 Que está todavía funcionando 527 00:23:08,240 --> 00:23:08,900 ¿Vale? 528 00:23:09,140 --> 00:23:10,559 Yo he lanzado un proceso 529 00:23:10,559 --> 00:23:13,359 Este proceso es mi programa principal 530 00:23:13,359 --> 00:23:15,619 Pero el problema que tenemos aquí 531 00:23:15,619 --> 00:23:18,019 Es que cuando he cerrado la ventana 532 00:23:18,019 --> 00:23:19,359 El proceso sigue allí 533 00:23:19,359 --> 00:23:20,779 Sigue funcionando 534 00:23:20,779 --> 00:23:21,519 ¿Vale? 535 00:23:22,220 --> 00:23:24,299 Entonces, si no quiero esto 536 00:23:24,299 --> 00:23:25,039 Solo tengo que decir 537 00:23:25,039 --> 00:23:27,839 Y ahora vamos a ver un poquito 538 00:23:27,839 --> 00:23:29,799 De qué podemos hacer 539 00:23:29,799 --> 00:23:32,359 Sobre esta ventana 540 00:23:32,359 --> 00:23:33,599 ¿Vale? 541 00:23:34,000 --> 00:23:36,220 Entonces, por ejemplo 542 00:23:36,220 --> 00:23:37,359 Damosle un nombre 543 00:23:37,359 --> 00:23:40,319 Nombre 544 00:23:40,319 --> 00:23:44,339 ¿Vale? ¿Dónde aparece este nombre? 545 00:23:45,339 --> 00:23:46,640 Se lo lanzo 546 00:23:46,640 --> 00:23:50,299 ¡Voilá! Aquí tengo mi ventana 547 00:23:50,299 --> 00:23:51,099 Que se llama nombre 548 00:23:51,099 --> 00:23:51,960 ¿Lo veis? 549 00:23:53,220 --> 00:24:00,390 Aquí pequeñito 550 00:24:00,390 --> 00:24:01,509 Da nombre 551 00:24:01,509 --> 00:24:04,869 El que le paso por defecto 552 00:24:04,869 --> 00:24:07,089 Es el nombre que se llamará esta interfaz 553 00:24:07,089 --> 00:24:08,990 ¿Vale? Entonces aquí estará el nombre 554 00:24:08,990 --> 00:24:09,630 De mi programa 555 00:24:09,630 --> 00:24:12,789 Fijaos, lo cierro y esto no se cierra 556 00:24:12,789 --> 00:24:13,730 Vale, fenomenal 557 00:24:13,730 --> 00:24:15,750 Quiero que nada más 558 00:24:15,750 --> 00:24:19,210 Hacerlo, encenderlo, pues se ve algo 559 00:24:19,210 --> 00:24:20,670 Porque esta es demasiado pequeñita 560 00:24:20,670 --> 00:24:22,029 Vale, le voy a dar un tamaño 561 00:24:22,029 --> 00:24:24,029 ¿Cómo se hará darle un tamaño? 562 00:24:24,970 --> 00:24:26,470 Win, punto 563 00:24:26,470 --> 00:24:28,690 Y fijaos que aquí vienen todos 564 00:24:28,690 --> 00:24:30,710 Los miles de cosas 565 00:24:30,710 --> 00:24:32,710 Que puedo hacer con este 566 00:24:32,710 --> 00:24:35,589 Con este 567 00:24:35,589 --> 00:24:37,509 Objeto de aquí, ¿vale? 568 00:24:37,970 --> 00:24:39,890 Estos son todos los métodos que se pueden hacer 569 00:24:39,890 --> 00:24:40,829 Sobre 570 00:24:40,829 --> 00:24:43,609 Un frame, sobre un JFrame 571 00:24:43,609 --> 00:24:46,049 ¿Cómo haré 572 00:24:46,049 --> 00:24:46,529 Para 573 00:24:46,529 --> 00:24:49,910 ¿Cómo se dice? 574 00:24:50,009 --> 00:24:52,349 Definir el tamaño de una ventana 575 00:24:52,349 --> 00:24:54,109 ¿Qué método usaríais vosotros? 576 00:24:56,779 --> 00:24:57,539 Por ejemplo 577 00:24:57,539 --> 00:24:59,599 Set, porque quiero 578 00:24:59,599 --> 00:25:00,819 Configurar algo 579 00:25:00,819 --> 00:25:03,200 Y entre todos los set, pues 580 00:25:03,200 --> 00:25:05,059 Algo que quiere decir tamaño 581 00:25:05,059 --> 00:25:06,119 O sea, no lo sé 582 00:25:06,119 --> 00:25:07,819 Set size 583 00:25:07,819 --> 00:25:08,779 ¿Vale? 584 00:25:09,839 --> 00:25:12,099 Existen varios set size 585 00:25:12,099 --> 00:25:14,220 Dos, uno que pilla un objeto dimension 586 00:25:14,220 --> 00:25:16,359 Y uno que pilla dos enteros 587 00:25:16,359 --> 00:25:19,000 Que son width y height 588 00:25:19,000 --> 00:25:20,440 Pues el segundo 589 00:25:20,440 --> 00:25:22,640 ¿Vale? 590 00:25:23,240 --> 00:25:25,059 Entonces, ¿cuánto ancho lo quiero? 591 00:25:26,559 --> 00:25:27,799 200 píxeles 592 00:25:27,799 --> 00:25:30,680 ¿Cuánto alto lo quiero? 593 00:25:31,240 --> 00:25:32,400 300 píxeles 594 00:25:33,200 --> 00:25:39,740 entonces ahora cuando lanzó este señor mi ventana y hasta no es pequeña como 595 00:25:39,740 --> 00:25:52,339 antes si no es 200 por 300 si esto lo pongo más grande como 500 por 500 596 00:25:52,339 --> 00:26:02,720 claramente ahora me la hace más grande mi ventana 500 píxeles por 500 píxeles 597 00:26:02,720 --> 00:26:06,880 sobre esto depende de la de la interfaz que yo hago vale si yo quiero una 598 00:26:06,880 --> 00:26:08,960 interfaz, tened en cuenta que cuando luego 599 00:26:08,960 --> 00:26:09,579 la hago 600 00:26:09,579 --> 00:26:12,160 más grande o más pequeño 601 00:26:12,160 --> 00:26:15,099 mis objetos aquí dentro 602 00:26:15,099 --> 00:26:17,299 se deberían adaptar 603 00:26:17,299 --> 00:26:18,859 al nuevo tamaño de la ventana 604 00:26:18,859 --> 00:26:20,940 si yo no quiero que esto 605 00:26:20,940 --> 00:26:22,920 sea posible, quiero que la ventana sea 606 00:26:22,920 --> 00:26:24,859 fija, porque si tú me lo haces más grande 607 00:26:24,859 --> 00:26:26,460 o más pequeño, se me descolaja todo 608 00:26:26,460 --> 00:26:28,819 pues puedo aceptar que esta ventana no 609 00:26:28,819 --> 00:26:29,980 sea resizable 610 00:26:29,980 --> 00:26:35,819 ¿cómo acepto que la ventana 611 00:26:35,819 --> 00:26:36,779 no sea resizable? 612 00:26:41,970 --> 00:26:42,450 ideas 613 00:26:42,450 --> 00:26:47,220 Exacto, win punto, que más 614 00:26:47,220 --> 00:26:51,559 Podría ser is 615 00:26:51,559 --> 00:26:53,099 Pero cuando algo es is 616 00:26:53,099 --> 00:26:56,079 Es para que tú me devuelvas un booleano 617 00:26:56,079 --> 00:26:57,299 De si es o no es 618 00:26:57,299 --> 00:26:58,579 No para setar 619 00:26:58,579 --> 00:27:01,559 Para setar lo es 620 00:27:01,559 --> 00:27:03,480 Set 621 00:27:03,480 --> 00:27:05,099 Y ahora que quiero 622 00:27:05,099 --> 00:27:09,640 Por ejemplo, habrá resizable 623 00:27:09,640 --> 00:27:11,900 Pues set resizable 624 00:27:11,900 --> 00:27:15,819 Set resizable 625 00:27:15,819 --> 00:27:18,160 Resizable 626 00:27:18,160 --> 00:27:19,539 Es decir, es 627 00:27:19,539 --> 00:27:21,960 Retamañizable 628 00:27:21,960 --> 00:27:23,660 Y yo le digo false 629 00:27:23,660 --> 00:27:26,119 Entonces no eres retamañizable 630 00:27:26,119 --> 00:27:28,680 Por lo tanto, sale así 631 00:27:28,680 --> 00:27:29,779 Y se queda así 632 00:27:29,779 --> 00:27:32,759 Y eso es obligatorio 633 00:27:32,759 --> 00:27:34,660 No, son cosas, parámetros 634 00:27:34,660 --> 00:27:35,480 Que yo puedo poner 635 00:27:35,480 --> 00:27:38,680 Ahora yo la he creado, veis que antes la podía hacer más pequeña 636 00:27:38,680 --> 00:27:40,380 Más grande, ahora no me da la opción 637 00:27:40,380 --> 00:27:42,559 ¿Vale? Porque resizable 638 00:27:42,559 --> 00:27:43,299 Lo he puesto false 639 00:27:43,299 --> 00:27:56,079 No es humanamente posible que yo os explique esto 640 00:27:56,079 --> 00:28:03,180 No lo voy a hacer, ¿vale? 641 00:28:03,880 --> 00:28:06,319 ¿Cómo vamos a jugar con esto? 642 00:28:06,319 --> 00:28:11,700 Pues la idea es que vosotros entendáis la filosofía que está por detrás 643 00:28:11,700 --> 00:28:14,559 Cómo se juega con estas cosas 644 00:28:14,559 --> 00:28:18,480 Y luego lo vayáis aplicando como os da la gana 645 00:28:18,480 --> 00:28:19,759 Investigando vosotros 646 00:28:19,759 --> 00:28:21,680 Está claro que cuando yo me pregunto 647 00:28:21,680 --> 00:28:24,880 Oye, mira, ¿se puede hacer que esta ventana no cambie de trabajo? 648 00:28:25,279 --> 00:28:26,940 Pues me voy a Google, busco 649 00:28:26,940 --> 00:28:28,920 ¿Cómo no cambiar de tamaño? 650 00:28:29,000 --> 00:28:31,299 Y me sale, ponle 6 bolas a false 651 00:28:31,299 --> 00:28:33,319 Y ya está, o me voy al API 652 00:28:33,319 --> 00:28:35,099 En el API viene todo 653 00:28:35,099 --> 00:28:37,400 O lo intento sabiendo un mínimo de inglés 654 00:28:37,400 --> 00:28:39,539 Que necesitéis saber porque si no, no aprobáis 655 00:28:39,539 --> 00:28:41,880 Este curso el próximo año 656 00:28:41,880 --> 00:28:42,539 Que hay inglés 657 00:28:42,539 --> 00:28:46,619 Por lo tanto, eso se necesita 658 00:28:46,619 --> 00:28:50,400 Vamos a hacer otras cosillas 659 00:28:50,400 --> 00:28:55,200 Por ejemplo, hemos dicho que tenemos el problema que cuando cierro la ventana 660 00:28:55,200 --> 00:28:56,339 Lo demuestro otra vez 661 00:28:56,339 --> 00:28:59,660 No se me cierra el programa 662 00:28:59,660 --> 00:29:03,299 A lo mejor es algo que yo quiero 663 00:29:03,299 --> 00:29:06,519 Yo quiero que mi ventana sea mi programa 664 00:29:06,519 --> 00:29:09,059 Cuando cierro esta ventana, quiero acabar el programa 665 00:29:09,059 --> 00:29:11,279 ¿Cómo podría hacer esto? 666 00:29:11,279 --> 00:29:22,180 pues me voy otra vez a win, punto, o sea, siempre mi JFrame, y entre todos los métodos que tenemos, hay uno, 667 00:29:24,960 --> 00:29:37,740 on, non, bo, bo, no me acuerdo, ahora lo buscamos un poco, lo tengo allí, pero las cosas se me olvidan, 668 00:29:37,740 --> 00:29:41,640 Set, esto, setDefault 669 00:29:41,640 --> 00:29:43,240 Esto, setDefault 670 00:29:43,240 --> 00:29:45,980 SetDefault 671 00:29:45,980 --> 00:29:46,299 Ahí 672 00:29:46,299 --> 00:29:51,819 Esto, setDefaultCloseOperation 673 00:29:51,819 --> 00:29:53,019 ¿Vale? 674 00:29:53,539 --> 00:29:54,099 O sea 675 00:29:54,099 --> 00:30:01,460 ¿Cuál es la operación por defecto cuando la ventana se cierra? 676 00:30:03,460 --> 00:30:04,460 Configura 677 00:30:04,460 --> 00:30:09,640 la operación 678 00:30:09,640 --> 00:30:12,039 de cierre por defecto 679 00:30:12,039 --> 00:30:17,660 y sobre esta base de aquí, aquí le puedo poner varios valores 680 00:30:17,660 --> 00:30:20,299 que harán cosas distintas 681 00:30:20,299 --> 00:30:25,319 en particular, si yo hago jFrame 682 00:30:25,319 --> 00:30:29,119 punto, aquí me vienen una serie de valores 683 00:30:29,119 --> 00:30:31,279 ¿qué son estos valores de aquí? 684 00:30:31,279 --> 00:30:32,539 ¿Qué he hecho? 685 00:30:33,019 --> 00:30:33,759 ¿Qué es esto? 686 00:30:37,329 --> 00:30:38,890 Métodos de la clase 687 00:30:38,890 --> 00:30:42,029 Métodos estáticos de la clase 688 00:30:42,029 --> 00:30:43,829 En mayúsculas 689 00:30:43,829 --> 00:30:50,299 Estos quizás sí 690 00:30:50,299 --> 00:30:52,460 Esto es un método estático de la clase 691 00:30:52,460 --> 00:30:53,839 Esto no 692 00:30:53,839 --> 00:30:56,119 ¿Qué son estos? 693 00:31:05,369 --> 00:31:05,970 ¿Subclases? 694 00:31:06,569 --> 00:31:06,789 No 695 00:31:06,789 --> 00:31:13,529 Estos de aquí con paréntesis son métodos 696 00:31:13,529 --> 00:31:14,950 Métodos estáticos 697 00:31:14,950 --> 00:31:16,410 ¿Cómo sé que son estáticos? 698 00:31:17,049 --> 00:31:25,460 Porque los estoy llamando sobre la clase 699 00:31:25,460 --> 00:31:26,460 No sobre el objeto 700 00:31:26,460 --> 00:31:27,920 No estoy haciendo win punto 701 00:31:27,920 --> 00:31:29,640 Estoy haciendo jframe punto 702 00:31:29,640 --> 00:31:31,140 ¿Eh? 703 00:31:32,279 --> 00:31:33,440 Y son estáticos 704 00:31:33,440 --> 00:31:34,160 Métodos estáticos 705 00:31:34,160 --> 00:31:34,900 Vale, fenomenal 706 00:31:34,900 --> 00:31:35,539 ¿Y estos? 707 00:31:42,980 --> 00:31:43,759 ¿Más métodos? 708 00:31:44,200 --> 00:31:44,400 No 709 00:31:44,400 --> 00:31:45,680 No son métodos 710 00:31:45,680 --> 00:31:46,720 Entonces si no son métodos 711 00:31:46,720 --> 00:31:47,839 Son atributos 712 00:31:47,839 --> 00:31:49,000 Pero fijaos 713 00:31:49,000 --> 00:31:50,160 ¿Cómo se escriben los atributos? 714 00:31:50,759 --> 00:31:51,259 En minúsculas 715 00:31:51,259 --> 00:31:51,980 En minúsculas 716 00:31:51,980 --> 00:31:52,759 ¿Y cuando son mayúsculas? 717 00:31:55,240 --> 00:31:55,880 Efectivamente 718 00:31:55,880 --> 00:31:57,059 Estos son constantes 719 00:31:57,059 --> 00:31:57,920 ¿Vale? 720 00:31:58,019 --> 00:31:58,779 Son final 721 00:31:58,779 --> 00:31:59,859 ¿Sí? 722 00:31:59,980 --> 00:32:00,480 Lo pone aquí 723 00:32:00,480 --> 00:32:00,779 F 724 00:32:00,779 --> 00:32:03,799 Estos son static final int 725 00:32:03,799 --> 00:32:04,500 Aboard 726 00:32:04,500 --> 00:32:07,279 Estos son valores 727 00:32:07,279 --> 00:32:08,660 Son numeritos 728 00:32:08,660 --> 00:32:10,240 3, 7, 4, 96 729 00:32:10,240 --> 00:32:13,140 Pero en vez de tenerle aquí que poner 730 00:32:13,140 --> 00:32:14,500 JFrame 731 00:32:14,500 --> 00:32:17,539 Set close operation 3 732 00:32:17,539 --> 00:32:19,359 No tengo ni idea 733 00:32:19,359 --> 00:32:20,400 De que es 3 734 00:32:20,400 --> 00:32:22,480 Porque no lo tengo idea 735 00:32:22,480 --> 00:32:24,660 Pues lo que hacen ellos es 736 00:32:24,660 --> 00:32:26,660 Definir una serie de variables 737 00:32:26,660 --> 00:32:28,619 Finales 738 00:32:28,619 --> 00:32:29,980 Que son ese numerito 739 00:32:29,980 --> 00:32:32,660 Que describen 740 00:32:32,660 --> 00:32:33,740 Que hacer 741 00:32:33,740 --> 00:32:35,559 Aquí, por ejemplo 742 00:32:35,559 --> 00:32:36,940 Dispose on close 743 00:32:36,940 --> 00:32:40,000 Cuando cierre, haga dispose 744 00:32:40,000 --> 00:32:42,259 Para él es el número 4 745 00:32:42,259 --> 00:32:43,099 Algo para decir 746 00:32:43,099 --> 00:32:46,400 Si yo escribo 4, hace exactamente lo mismo 747 00:32:46,400 --> 00:32:48,140 Pero para mí es más claro 748 00:32:48,140 --> 00:32:49,799 Saber que esta ventana 749 00:32:49,799 --> 00:32:52,880 Cuando se cierra, se disposa al cerrarse 750 00:32:52,880 --> 00:32:54,059 Quiere decir, idea 751 00:32:54,059 --> 00:32:56,200 Vamos a usar 752 00:32:56,200 --> 00:32:57,400 Exit on close 753 00:32:57,400 --> 00:32:59,640 Entonces, ¿cuál es 754 00:32:59,640 --> 00:33:04,740 La operación por defecto 755 00:33:04,740 --> 00:33:06,160 Al cerrar 756 00:33:06,160 --> 00:33:07,759 Este frame 757 00:33:07,759 --> 00:33:10,519 Pues el que está codificado 758 00:33:10,519 --> 00:33:12,779 El numerito que está codificado 759 00:33:12,779 --> 00:33:14,259 Dentro del JetFrame 760 00:33:14,259 --> 00:33:15,640 Como exit on close 761 00:33:15,640 --> 00:33:18,539 O sea que al cerrarlo quiero hacer una exit 762 00:33:18,539 --> 00:33:20,059 O sea salir del programa 763 00:33:20,059 --> 00:33:23,880 Podría hacer otra cosa 764 00:33:23,880 --> 00:33:28,200 No, porque si fuera por defecto 765 00:33:28,200 --> 00:33:29,900 Cuando yo lo cierro se habría cerrado 766 00:33:29,900 --> 00:33:35,500 Entonces por defecto es otro 767 00:33:35,500 --> 00:33:38,500 ¿Cuál es por defecto? No lo sé, vete al app y míralo 768 00:33:38,500 --> 00:33:39,980 No puedo saber todo yo 769 00:33:39,980 --> 00:33:43,140 Y ahora si os fijáis 770 00:33:43,140 --> 00:33:45,299 Lanzo este señor 771 00:33:45,299 --> 00:33:47,740 Fijaos que está ranando 772 00:33:47,740 --> 00:33:48,940 Porque aquí está rojo 773 00:33:48,940 --> 00:33:50,319 ¿Sí? 774 00:33:50,799 --> 00:33:53,039 En el momento en que cierro la ventana 775 00:33:53,039 --> 00:33:54,519 Fijaos que ahora 776 00:33:54,519 --> 00:33:55,920 Se ha parado 777 00:33:55,920 --> 00:34:02,150 Nota, cuidado a no hacer esto 778 00:34:02,150 --> 00:34:04,529 Y luego empezar a probar 779 00:34:04,529 --> 00:34:06,970 62.000 veces vuestro programa 780 00:34:06,970 --> 00:34:10,010 Y tener al final 62.000 781 00:34:10,010 --> 00:34:11,329 Procesos 782 00:34:11,329 --> 00:34:13,429 Activados en vuestro ordenador 783 00:34:13,429 --> 00:34:15,369 Mientras vosotros continuáis 784 00:34:15,369 --> 00:34:16,969 A probar y probar y probar 785 00:34:16,969 --> 00:34:18,050 El mismo programita 786 00:34:18,050 --> 00:34:20,969 ¿Si? Cuidado 787 00:34:20,969 --> 00:34:23,409 Cerrar la ventana 788 00:34:23,409 --> 00:34:25,269 No implica que se cierre 789 00:34:25,269 --> 00:34:26,909 El programa si tu no lo has dicho 790 00:34:26,909 --> 00:34:29,630 ¿Si? 791 00:34:31,070 --> 00:34:33,630 ¿Que mas podemos hacer nosotros? 792 00:34:33,949 --> 00:34:35,289 Ah no me acuerdo el método 793 00:34:35,289 --> 00:34:45,909 pero bien punto locatio no casete lo que es un relativo si tengo este programa está aquí 794 00:34:45,909 --> 00:34:59,590 está aquí set location relative tú y le digo nul esto es configura la locación de este frame con 795 00:34:59,590 --> 00:35:01,070 Con respecto a 796 00:35:01,070 --> 00:35:02,090 Null 797 00:35:02,090 --> 00:35:05,110 Tú lo haces con respecto a otra cosa 798 00:35:05,110 --> 00:35:07,530 Con respecto a otra cosa 799 00:35:07,530 --> 00:35:08,469 Si tú le pones null 800 00:35:08,469 --> 00:35:11,670 El efecto que haces es que se te abre 801 00:35:11,670 --> 00:35:13,909 En el medio 802 00:35:13,909 --> 00:35:18,480 Es una forma fácil 803 00:35:18,480 --> 00:35:20,719 Para que la ventana no se te abra aquí 804 00:35:20,719 --> 00:35:22,320 Si no se te abre en el medio 805 00:35:22,320 --> 00:35:24,980 Tú configurando 806 00:35:24,980 --> 00:35:26,539 Location que habéis visto 807 00:35:26,539 --> 00:35:27,300 Que si hago 808 00:35:27,300 --> 00:35:30,679 Que si hago win 809 00:35:30,679 --> 00:35:32,960 punto set location 810 00:35:32,960 --> 00:35:34,360 aquí hay 811 00:35:34,360 --> 00:35:36,300 varios set location 812 00:35:36,300 --> 00:35:38,280 ¿vale? by platform 813 00:35:38,280 --> 00:35:40,679 directamente location 814 00:35:40,679 --> 00:35:42,679 relative to cosas de este 815 00:35:42,679 --> 00:35:44,719 estilo ¿vale? yo puedo 816 00:35:44,719 --> 00:35:46,719 hacer que esta se abra en una 817 00:35:46,719 --> 00:35:48,539 coordinada cualquiera de mi 818 00:35:48,539 --> 00:35:50,599 pantalla ¿vale? la 00 819 00:35:50,599 --> 00:35:52,619 ¿cuál será? arriba 820 00:35:52,619 --> 00:35:54,500 a la izquierda, si yo pongo 821 00:35:54,500 --> 00:35:56,820 200, 700 se me abrirá 822 00:35:56,820 --> 00:35:58,800 200, 700, si yo le 823 00:35:58,800 --> 00:35:59,260 Pongo 824 00:35:59,260 --> 00:36:02,719 Pilla el tamaño de mi monitor 825 00:36:02,719 --> 00:36:04,000 Y divídelo por dos 826 00:36:04,000 --> 00:36:05,900 Y luego pilla la altura de mi monitor 827 00:36:05,900 --> 00:36:06,760 Y divídelo por dos 828 00:36:06,760 --> 00:36:09,079 Pues también lo pondré más o menos centrado 829 00:36:09,079 --> 00:36:11,380 Si 830 00:36:11,380 --> 00:36:12,699 O si no 831 00:36:12,699 --> 00:36:14,179 Uso esto 832 00:36:14,179 --> 00:36:15,719 Pasándole un null 833 00:36:15,719 --> 00:36:17,320 Y si le paso eso a null 834 00:36:17,320 --> 00:36:18,420 Él en automático 835 00:36:18,420 --> 00:36:20,079 Pilla el tamaño de mi monitor 836 00:36:20,079 --> 00:36:20,980 Y me lo pone en el centro 837 00:36:20,980 --> 00:36:24,489 Cuidado 838 00:36:24,489 --> 00:36:26,929 Y ya lo habéis visto en 839 00:36:26,929 --> 00:36:29,329 Lenguaje Marcas 840 00:36:29,329 --> 00:36:31,269 Con eso de los 841 00:36:31,269 --> 00:36:32,750 De los píxeles 842 00:36:32,750 --> 00:36:35,510 Porque como cada pantalla 843 00:36:35,510 --> 00:36:37,550 Tiene una resolución distinta 844 00:36:37,550 --> 00:36:38,909 Un número de píxeles distinto 845 00:36:38,909 --> 00:36:41,469 Lo que se ve bien en tu pantalla 846 00:36:41,469 --> 00:36:42,789 800x600 847 00:36:42,789 --> 00:36:45,349 Se ve fatal en una 4K 848 00:36:45,349 --> 00:36:49,150 Entonces cuidado 849 00:36:49,150 --> 00:36:54,699 En HTML es CSS 850 00:36:54,699 --> 00:36:56,639 Y eso se soluciona 851 00:36:56,639 --> 00:36:58,679 Un poquito con el porcentaje 852 00:36:58,679 --> 00:37:01,059 Pero no mucho 853 00:37:01,059 --> 00:37:02,000 ¿Vale? 854 00:37:02,260 --> 00:37:05,000 Y luego hay problemas también con el porcentaje 855 00:37:05,000 --> 00:37:07,679 Pues aquí se soluciona de otras formas 856 00:37:07,679 --> 00:37:09,800 Que a lo mejor veremos un poquito más adelante 857 00:37:09,800 --> 00:37:11,400 El importante es 858 00:37:11,400 --> 00:37:13,440 Que al final acabe bien 859 00:37:13,440 --> 00:37:14,400 Ya esto 860 00:37:14,400 --> 00:37:17,000 El poner resize de bola false 861 00:37:17,000 --> 00:37:18,920 Es una ventaja 862 00:37:18,920 --> 00:37:20,780 Porque impide 863 00:37:20,780 --> 00:37:23,639 Que la gente cambie el tamaño 864 00:37:23,639 --> 00:37:25,920 Y se te estropee toda tu interfaz 865 00:37:25,920 --> 00:37:26,440 ¿Vale? 866 00:37:26,559 --> 00:37:27,440 Ese es el tamaño 867 00:37:27,440 --> 00:37:30,099 Ahora, si yo hago una ventana 868 00:37:30,099 --> 00:37:31,880 Que por defecto es 869 00:37:31,880 --> 00:37:32,960 2000x2000 870 00:37:32,960 --> 00:37:34,639 Y luego la intento abrir 871 00:37:34,639 --> 00:37:37,539 En una pantalla 800x300 872 00:37:37,539 --> 00:37:38,659 Tengo un problema 873 00:37:38,659 --> 00:37:41,440 ¿Sí? 874 00:37:45,519 --> 00:37:46,179 ¿Dudas? 875 00:37:48,719 --> 00:37:48,900 ¿Sí? 876 00:37:49,860 --> 00:37:50,300 Entonces 877 00:37:50,300 --> 00:37:53,340 Si os fijáis aquí yo tengo una clase principal 878 00:37:53,340 --> 00:37:55,179 Estoy utilizando directamente JFrame 879 00:37:55,179 --> 00:37:55,820 ¿Vale? 880 00:37:56,340 --> 00:37:58,539 JFrame tiene sus características 881 00:37:58,539 --> 00:38:02,179 Y si yo quiero crear mi propia ventana 882 00:38:02,179 --> 00:38:04,000 Hacer una ventana mía 883 00:38:04,000 --> 00:38:06,199 Que yo pueda utilizar 884 00:38:06,199 --> 00:38:08,619 Entonces me creo mi ventana 885 00:38:08,619 --> 00:38:10,380 New 886 00:38:10,380 --> 00:38:11,579 Class 887 00:38:11,579 --> 00:38:14,000 Mi ventana 888 00:38:14,000 --> 00:38:18,420 Esta clase 889 00:38:18,420 --> 00:38:19,980 Mi ventana para que sea 890 00:38:19,980 --> 00:38:21,639 Un JFrame 891 00:38:21,639 --> 00:38:30,840 Vale 892 00:38:30,840 --> 00:38:32,900 Y ahora esta 893 00:38:32,900 --> 00:38:35,280 ¿Qué hago aquí? 894 00:38:36,280 --> 00:38:37,260 Public 895 00:38:37,260 --> 00:38:39,440 Mi ventana 896 00:38:39,440 --> 00:38:40,800 Constructor 897 00:38:40,800 --> 00:38:43,099 Con string 898 00:38:43,099 --> 00:38:44,619 N, por ejemplo 899 00:38:44,619 --> 00:38:46,679 ¿Qué hago? 900 00:38:49,119 --> 00:38:49,800 ¡Súper! 901 00:38:53,090 --> 00:38:53,809 Antes 902 00:38:53,809 --> 00:38:56,570 Lanzo el constructor del GFrame 903 00:38:56,570 --> 00:38:58,349 Que es el que me construye la ventana 904 00:38:58,349 --> 00:38:59,489 ¿Sí? 905 00:38:59,690 --> 00:39:02,190 Y después hago lo que quiero hacer 906 00:39:02,190 --> 00:39:03,110 Para mi ventana 907 00:39:03,110 --> 00:39:05,869 Que en general es 908 00:39:05,869 --> 00:39:06,670 ¡Esto! 909 00:39:11,869 --> 00:39:12,849 Pero fijaos 910 00:39:12,849 --> 00:39:13,869 Ahora uso win 911 00:39:13,869 --> 00:39:15,829 ¿Qué uso? 912 00:39:15,829 --> 00:39:24,320 Mi ventana 913 00:39:24,320 --> 00:39:28,719 Nope 914 00:39:28,719 --> 00:39:33,199 Porque para hacer eso, setSize debería ser 915 00:39:33,199 --> 00:39:35,760 Static 916 00:39:35,760 --> 00:39:37,960 Pero antes no lo he usado como static 917 00:39:37,960 --> 00:39:39,760 SetSize no es un método estático 918 00:39:39,760 --> 00:39:40,920 Entonces, ¿sobre qué lo uso? 919 00:39:48,730 --> 00:39:49,769 Ay, señores 920 00:39:49,769 --> 00:39:51,710 Las torrijas 921 00:39:51,710 --> 00:39:55,070 Claro, me tengo que crear un objeto 922 00:39:55,070 --> 00:39:55,690 Nope 923 00:39:55,690 --> 00:39:57,889 No, lo estoy construyendo el objeto 924 00:39:57,889 --> 00:39:59,389 Estoy en el constructor de este objeto 925 00:39:59,389 --> 00:40:00,570 ¿Qué hago? Me construyo otro objeto 926 00:40:00,570 --> 00:40:01,989 Que luego necesito otro objeto 927 00:40:01,989 --> 00:40:02,929 Que luego necesito otro objeto 928 00:40:02,929 --> 00:40:04,289 Entro en un loop infinito 929 00:40:04,289 --> 00:40:06,389 Super 930 00:40:06,389 --> 00:40:13,059 Soy una ventana 931 00:40:13,059 --> 00:40:14,579 Por lo tanto puedo 932 00:40:14,579 --> 00:40:15,980 Setar mi size 933 00:40:15,980 --> 00:40:17,860 Soy una ventana 934 00:40:17,860 --> 00:40:19,659 Es más 935 00:40:19,659 --> 00:40:21,920 Voila 936 00:40:21,920 --> 00:40:25,769 Este método 937 00:40:25,769 --> 00:40:27,489 Está en mi clase 938 00:40:27,489 --> 00:40:30,090 Lo he extendido desde aquí que está en mi clase 939 00:40:30,090 --> 00:40:32,090 Entonces este es un método que está en mi clase 940 00:40:32,090 --> 00:40:33,250 Está aquí abajo, no lo veis 941 00:40:33,250 --> 00:40:35,570 Pero porque no veis la extensión 942 00:40:35,570 --> 00:40:38,289 Entonces lo puedo llamar 943 00:40:38,289 --> 00:40:39,309 Directamente así 944 00:40:39,309 --> 00:40:47,519 Y ahora tengo mi ventana 945 00:40:47,519 --> 00:40:49,539 Que es mi interfaz gráfica que puedo lanzar 946 00:40:49,539 --> 00:40:50,780 Está claro que 947 00:40:50,780 --> 00:40:52,179 Fijaos que aquí no hay un main 948 00:40:52,179 --> 00:40:54,980 Cuando estoy en el principal 949 00:40:54,980 --> 00:40:56,519 Para lanzar 950 00:40:56,519 --> 00:40:58,480 Una de estas ventanas 951 00:40:58,480 --> 00:41:00,280 Lo único que tendré que hacer es que 952 00:41:00,280 --> 00:41:02,800 Mi ventana win 953 00:41:02,800 --> 00:41:04,800 Es igual a new 954 00:41:04,800 --> 00:41:06,099 Mi ventana 955 00:41:06,099 --> 00:41:15,260 Y si no la quiero 956 00:41:15,260 --> 00:41:16,699 Utilizar aquí dentro 957 00:41:16,699 --> 00:41:19,019 Porque este programa lo único que hace 958 00:41:19,019 --> 00:41:21,780 Lanzarme la interfaz gráfica y luego sea lo que sea 959 00:41:21,780 --> 00:41:23,320 Hasta puedo hacer así 960 00:41:23,320 --> 00:41:28,539 Creo un objeto nuevo 961 00:41:28,539 --> 00:41:29,400 En mi ventana 962 00:41:29,400 --> 00:41:32,599 ¿Qué hará? Pues lanzará esto 963 00:41:32,599 --> 00:41:33,980 Crea la ventana 964 00:41:33,980 --> 00:41:35,320 Y acepta todo lo que sea 965 00:41:35,320 --> 00:41:36,159 Y luego se pone en vídeo 966 00:41:36,159 --> 00:41:42,119 Exactamente lo mismo que antes 967 00:41:42,119 --> 00:41:46,079 Solo que ahora he separado 968 00:41:46,079 --> 00:41:47,619 Lo que es mi lanzador 969 00:41:47,619 --> 00:41:50,099 De lo que es el objeto ventana 970 00:41:50,099 --> 00:41:50,900 Que es mi interfaz 971 00:41:50,900 --> 00:41:54,480 ¿Dudas? 972 00:41:54,480 --> 00:42:04,099 Si cierro, cierra 973 00:42:04,099 --> 00:42:05,699 Porque siempre éxito en Clubs 974 00:42:05,699 --> 00:42:10,159 Dudas 975 00:42:12,219 --> 00:42:12,820 Preguntas