Saltar navegación

Clase 26-04-24- 2 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 6 de mayo de 2024 por Raquel G.

8 visualizaciones

Descargar la transcripción

Vale, pues a ver 00:00:00
¿Alguna solución rápida 00:00:02
antes de seguir con lo que nos haya ocurrido 00:00:04
para esto? 00:00:06
¿Alguien me puede decir alguna solución rápida 00:00:10
que se le haya ocurrido? 00:00:12
¿Este tema? 00:00:15
A ver, lo único que queremos 00:00:29
simplemente es que esto 00:00:31
solo se haga si la peli 00:00:32
no estaba de antes, nada más 00:00:35
No queremos avisar a nadie mediante una excepción 00:00:36
Esto no es un método 00:00:39
que llame otro método 00:00:40
Claro, tú le das a añadir película 00:00:42
y efectivamente el combo box no se inmute. 00:00:48
Claro, que no se guarde nada. 00:00:51
Claro, aquí ya sabemos que no se va a guardar 00:00:53
porque es un set. 00:00:55
El problema aquí no está. 00:00:56
Si la peli ya existe, este add 00:00:58
no se va a ejecutar porque es un haset. 00:01:00
Aquí no hay que hacer ningún if, no hace ninguna falta. 00:01:02
Pero aquí sí. 00:01:05
Porque eso es otra cosa, este es el combo box. 00:01:06
Entonces aquí lo único que queremos es 00:01:10
que este addItem del título 00:01:11
de la película 00:01:14
esto solo se haga 00:01:15
si la peli no estaba de antes 00:01:17
en el combo box 00:01:20
¿no os ocurre algo así muy rapidillo para solucionar esto? 00:01:21
venga, a ver 00:01:27
aquí, películas contains 00:01:28
bueno, pero si lo haces aquí 00:01:36
la contiene porque la acabas de añadir 00:01:38
No, pero lo he puesto 00:01:40
en plan no de añadir 00:01:41
a la textil. 00:01:43
Pero espero. 00:01:46
Pero creo que no es un solo punto de descripción. 00:01:47
¿Me dices el context del Congo Box? 00:01:50
O context del set. 00:01:52
¿Y dónde me pones el context? 00:01:53
Claro, pero que te va a dar true 00:01:57
porque lo acabas de añadir. 00:01:59
Claro, pero por eso... 00:02:00
Entonces esto lo has bajado de bajo. 00:02:01
Ah, vale, que lo has cambiado de sitio. 00:02:03
Vale. 00:02:05
Esa es una solución. 00:02:07
¿vale? una solución es 00:02:08
esto, ponerlo abajo 00:02:10
y entonces esto aquí haces 00:02:11
el set ya contiene la película 00:02:13
si ya la, o sea 00:02:16
el set no contiene la película 00:02:18
una solución que él dice 00:02:19
es esta 00:02:21
es decir, esto lo hacemos después 00:02:23
aquí abajo, lo hacemos después 00:02:26
y aquí, yo cojo la película 00:02:32
la película ya existe en mi colección 00:02:34
es decir 00:02:36
películas.contains 00:02:37
Datos, perdón 00:02:40
Datos.peliculas 00:02:44
.contains 00:02:48
Esta peli nueva 00:02:50
Que me están metiendo 00:02:51
Y aquí un negado delante 00:02:52
¿Vale? 00:02:54
Esto está bien 00:02:57
Yo cojo la película del área de texto 00:02:58
Todavía no hago nada con ella, no tomo ninguna decisión con ella 00:03:01
No está de antes 00:03:03
No está de antes 00:03:06
Llego, subtitulo al combo box 00:03:07
Y la agrego 00:03:09
¿Vale? Esa es una solución, efectivamente 00:03:10
Que lo más 00:03:12
Seguro es probarlo 00:03:15
Claro 00:03:19
Entonces yo meto una primera peli 00:03:19
El sol que la he dirigido, Pepito 00:03:22
Vale, añadida 00:03:25
Aquí está 00:03:26
Y ahora voy a añadirla otra vez esta misma 00:03:27
O sea, me aparece una sola vez 00:03:30
Y ahora la añado otra vez 00:03:31
Y no, la puedo añadir todas las veces que quiera 00:03:33
¿Vale? 00:03:35
Pues esta es una solución sencilla 00:03:37
vale, lo que teníamos 00:03:39
otra cosa todavía 00:03:41
quizá más 00:03:45
sencilla, a nivel de código más fácil 00:03:46
un segundito, es 00:03:49
recordad que este ad 00:03:50
este ad 00:03:53
si ha añadido 00:03:55
la película, porque no existía 00:03:57
de antes, porque con el Hasco Day, cuando lo ha añadido 00:03:59
te va a dar un true 00:04:01
y si no lo ha añadido, te devuelve un false 00:04:03
¿verdad? recordad que este ad 00:04:05
te daba un valor 00:04:07
de verificación 00:04:08
¿no? no tiene un boolean 00:04:10
es decir, vamos a dejarlo como lo teníamos antes 00:04:11
el software 00:04:17
lo teníamos 00:04:19
así 00:04:21
bueno, me falta 00:04:26
este, vale 00:04:28
entonces 00:04:30
¿veis? el método 00:04:32
add película, como no se ve muy bien 00:04:36
el método add que es añadir 00:04:38
a una colección, añadir 00:04:40
devuelve un boolean 00:04:41
ese valor lo solemos despreciar 00:04:43
pero es un valor que yo puedo usar 00:04:45
para verificar si esa película 00:04:47
se ha añadido de forma efectiva 00:04:50
a la colección o no 00:04:52
¿cuándo no se habrá añadido a la colección 00:04:52
por mucho ad que yo haga? 00:04:55
cuando ya estaba de antes 00:04:57
el jasco de equals me ha pitado 00:04:58
y no lo ha añadido 00:05:01
en ese caso me devuelvo un false 00:05:02
y si sí la ha añadido porque no estaba de antes 00:05:04
me devuelve un true 00:05:07
bueno, pues me viene estupendo 00:05:08
¿vale? el ahora usar 00:05:11
este valor de control 00:05:15
y cambio mi código y me queda mucho más bonito 00:05:18
y lo dejo así 00:05:20
intento añadir película 00:05:22
si esto me devuelve true 00:05:31
si esto me devuelve true 00:05:35
es que la ha añadido de verdad 00:05:36
porque no estaba de antes 00:05:38
entonces en ese caso además la añado al combo box 00:05:40
pero si esto me devuelve 00:05:43
falso es que no la ha añadido 00:05:45
pues entonces no entrará ahí 00:05:47
¿vale? 00:05:49
Bueno, pues así, más bonito, ¿verdad? 00:05:55
Salvo por esa línea amarilla famosa que gastamos. 00:05:59
Cojo la película. 00:06:02
Esto es un need, esto es una condición, 00:06:05
porque esto me devuelve un boolean. 00:06:07
Esto a la vez que intenta añadirlo, 00:06:08
a la vez que intenta añadirlo, ya me devuelve un boolean. 00:06:10
Luego es una condición. 00:06:12
Que esto me da true, ha añadido la película, 00:06:14
además me da true porque la ha añadido, 00:06:17
luego en ese caso quiero que vaya al combo box. 00:06:19
Que esto me da false, no lo ha añadido porque ya existía. 00:06:21
entonces no quiero que vaya al combo 2 00:06:24
vale 00:06:26
vamos a comprobarlo porque muchas veces 00:06:28
uno cree que ha hecho algo bien y no lo ha hecho bien 00:06:41
y si funciona perfectamente 00:06:43
bueno pues 00:06:45
parece que ya el evento 00:06:51
del botón parece que ya está bien 00:06:53
ya no nos da errores 00:06:55
no hemos detectado errores de funcionamiento 00:06:57
vale pues lo dejamos 00:06:59
así salvo por la cosita esa amarilla 00:07:01
que me recomienda 00:07:03
o bueno no sé ya veremos que me recomienda 00:07:04
vale ahora 00:07:07
evento del desplegable 00:07:08
entonces esta aplicación 00:07:10
cuando nosotros 00:07:12
hagamos click 00:07:15
cuando hagamos click aquí 00:07:22
en este desplegable 00:07:28
cuando hagamos click ahí arriba 00:07:29
queremos que pase algo 00:07:31
entonces hay que capturar el evento de ese combo 00:07:33
entonces ahora viene la pregunta 00:07:36
uy que evento capturo 00:07:38
es un keylist scenery capturo el 00:07:40
click click o que es como 00:07:42
lo capturo, bueno siempre es buena idea 00:07:44
probar el evento por defecto, a ver si el evento 00:07:46
por defecto coincide justo con lo que estamos 00:07:48
haciendo. Siempre es buena idea. 00:07:50
Vamos a hacer una acción listener para el 00:07:52
combo box y lo voy a asociar 00:07:54
al combo box. A ver si el evento de 00:07:56
desplegarlo y pinchar 00:07:58
es justo el que 00:07:59
estoy buscando, el que lo captura. 00:08:02
Es justo el que lo captura. A ver si el evento por defecto 00:08:04
del combo box es ese, desplegar y pinchar. 00:08:06
Porque si el evento por defecto del combo box 00:08:08
es desplegar y pinchar, ya está. 00:08:10
Hago una acción listener. 00:08:12
¿Vale? Pero podría no serlo. 00:08:14
entonces tendré que capturar el evento 00:08:15
que yo asocio a eso 00:08:17
que puede ser el keyclick del keylistener 00:08:19
lo que sea 00:08:21
vamos a probar el action listener 00:08:21
de este desplegable de aquí 00:08:23
pues venga, otra clase interna 00:08:26
otra clase interna 00:08:30
captura 00:08:35
lista 00:08:46
películas 00:08:48
que también tiene que implementar 00:08:49
estamos probando a ver si el evento por defecto 00:08:52
del combo box es el que 00:08:54
vamos a accionar 00:08:56
pues entonces implement action listener 00:08:57
vale, entonces 00:09:00
ala 00:09:05
ya está 00:09:11
vale, bueno pues 00:09:13
¿qué queremos? 00:09:15
se supone que esto es lo que va 00:09:17
a ejecutarse cuando hagamos 00:09:18
clic en el combo box 00:09:21
calla Noni, esto es lo que se supone que 00:09:22
se va a ejecutar cuando hagamos clic en el combo box 00:09:25
bueno, ¿por qué queremos que se ejecute? 00:09:27
queremos que 00:09:30
se coja el título que acabamos 00:09:30
de seleccionar, en el que hemos hecho clic 00:09:33
el título que hemos seleccionado 00:09:35
y en ese título 00:09:37
queremos buscar en el set 00:09:38
para recuperar el objeto 00:09:41
con ese título 00:09:43
y para 00:09:44
recuperar el director 00:09:46
de esa peli, cuando ya lo tengamos 00:09:48
lo ponemos en área de texto, director 00:09:50
pero lo primero es coger el título del combo box 00:09:52
entonces lo primero que hay que hacer es 00:09:55
investigar como saco yo de este 00:09:57
elemento, como saco yo 00:09:59
lo que tenga seleccionado 00:10:01
pues de nuevo es lo de siempre 00:10:03
es mirar los métodos que tenga 00:10:05
eso, entonces vamos a ver 00:10:07
lista películas, que me deja hacer 00:10:14
pues uno, lo busca en la documentación 00:10:16
o trabaja así a lo bestia 00:10:18
pues uno investiga 00:10:20
un poquito los métodos, a ver 00:10:22
como estamos recuperando todos los métodos 00:10:25
relacionados con recuperar algo, suele empezar 00:10:28
por get siempre 00:10:30
por get, pues hombre 00:10:31
si miramos los que empiezan por get 00:10:33
pues get 00:10:35
get del background 00:10:38
get del borde, get no sé qué 00:10:39
get las coordenadas en las que está 00:10:42
colocado, get el cursor 00:10:44
que tiene 00:10:45
entonces tiene ahí tropecientos 00:10:46
mil get para coger cosas que ninguno 00:10:50
nos pega 00:10:51
hasta que llegamos a un get 00:10:52
selected item 00:10:56
este 00:10:58
y si uno mira en la ayuda del get selected 00:11:00
item 00:11:03
vale 00:11:04
pues te dice, te devuelve 00:11:06
el ítem que está seleccionado 00:11:08
en ese momento en el combo box 00:11:10
te lo devuelve y dices, pues justo 00:11:12
justo ese es el que estaba yo buscando 00:11:14
este método 00:11:16
vale, pues este método será 00:11:18
el título 00:11:20
en el que hemos marcado en el combo box 00:11:21
justo este es 00:11:25
vale 00:11:28
lo que pasa es que este título 00:11:29
perdón, este método 00:11:31
está pensado 00:11:33
para que te lo devuelva como object 00:11:35
entonces tú sabes 00:11:37
que es un string porque lo que le hemos 00:11:39
metido con el add item aquí 00:11:41
le hemos metido un string 00:11:43
entonces como sabemos que es un string 00:11:45
porque tenemos acceso al add item 00:11:47
sabemos que es un string 00:11:49
pues podemos hacer el 00:11:50
casting a string sin problema 00:11:53
ala pues ya tenemos la película 00:11:55
y ahora ya viene tarea de programar 00:11:59
como siempre porque esa es la que vamos a estar 00:12:01
haciendo todo el rato 00:12:03
voy a tener que recorrer mi set 00:12:04
hasta encontrar la película 00:12:08
cuyo título sea este y cuando la encuentro 00:12:10
pues poner el directo en el área de texto 00:12:14
pues nada 00:12:16
vamos a recorrer el set y ya está 00:12:18
y acá vamos rápido 00:12:23
para cada película 00:12:25
en datos.películas 00:12:27
aquí es donde 00:12:34
si hubiéramos usado un map 00:12:37
esto es más fácil 00:12:38
porque no tengo que hacer un form 00:12:41
si yo he usado un map para poner 00:12:43
la clave, el título 00:12:45
y el valor, el director 00:12:47
si yo he usado un map 00:12:49
porque he verificado que el título es clave 00:12:51
si he usado un map, esto es facilísimo 00:12:53
me hago un get 00:12:55
por el título y ya tengo el director 00:12:56
entonces esa es la ventaja del map 00:12:59
como no he usado un map 00:13:01
sino que he usado un conjunto 00:13:03
de una clase película 00:13:06
porque he previsto que la aplicación 00:13:07
a lo mejor luego se pueda ampliar 00:13:09
y las películas van a ir ganando propiedades 00:13:10
por la razón que sea 00:13:13
como no tengo un map 00:13:15
pues me toca recorrer para hacer esto 00:13:16
repito, con un map 00:13:18
que fuera clave 00:13:21
título, valor director 00:13:23
me dan el título, pues me hago un get 00:13:25
get título y ya me sale el director 00:13:27
pero como no está en un map 00:13:29
sino que está en un set de películas, pues tengo que hacer el for 00:13:31
pues no pasa nada, tampoco es tan horrible 00:13:33
hacemos el for 00:13:36
si la película P 00:13:36
su título 00:13:38
es igual 00:13:42
que el título que 00:13:44
me han dado en el combo box 00:13:47
ya tengo el director 00:13:49
pues vamos a poner el director 00:13:50
en el área de texto director 00:13:53
y el título 00:13:55
también en la de 00:13:57
en la de 00:13:58
para que nos aparezcan 00:14:01
los dos datos 00:14:04
Pues venga, ya hemos encontrado la película 00:14:04
Que es P, pues ponemos en el área de texto 00:14:07
Las áreas de texto se llamaban 00:14:09
Título y director 00:14:11
Pues en el área de texto 00:14:12
Título 00:14:15
Ponemos, set test 00:14:15
El título de la peli 00:14:19
Que el título de la peli 00:14:21
Será P, que es título 00:14:23
Y en 00:14:24
Y en director 00:14:28
Ponemos 00:14:30
El director de la peli 00:14:35
Que será p.getDirector. 00:14:38
Vale, pues el código en principio ya está. 00:14:43
Recorremos el for de pelis. 00:14:46
En cuanto encontremos una peli con ese título, 00:14:50
ponemos en las áreas de texto los datos. 00:14:54
¿Que tengo áreas de texto con más datos? 00:14:57
Pues pongo todos, los que sean. 00:14:58
Vale, pues ahora solo nos falta hacer la prueba 00:15:01
a ver si el evento... 00:15:03
Bueno, y nos falta no cometer el error de antes, 00:15:05
que es añadir al combo box el ActionListener. 00:15:07
Porque esto pasa muy a menudo 00:15:10
Que se nos olvide 00:15:15
Adaption listener 00:15:16
New 00:15:19
Captura 00:15:23
Lista 00:15:25
Películas 00:15:26
Ala 00:15:28
Pues ahora ya 00:15:30
Entramos en la fase de pruebas 00:15:32
Vamos a probar a ver si esto que hemos hecho 00:15:35
Está bien 00:15:37
Venga, pues ala 00:15:39
Título 00:15:47
Pues esta peli que la dirigió Pepe, ala, aquí está esa peli, ahora, ahora, pues esta peli que la dirigió Juan, pues ala, ahí está, ¿vale? 00:15:48
entonces 00:16:07
vamos ahora 00:16:10
a hacer clic 00:16:14
en uno de los títulos 00:16:16
a ver qué pasa 00:16:17
a ver quién dirigió este 00:16:20
pues efectivamente, me la ha recuperado 00:16:21
vale, o sea cuando 00:16:24
ya hemos caracterizado el evento 00:16:26
por defecto, o sea yo cuando pulso aquí 00:16:28
lo despliego, no está pasando 00:16:30
nada, el evento por defecto 00:16:32
no es sólo desplegar, sino es también 00:16:34
pinchar 00:16:36
vale 00:16:37
si pongo una tercera 00:16:38
la añado, pues aquí están las tres pelis 00:16:43
pues esta 00:16:48
la dirigió este, esta es esta 00:16:50
esta es esta 00:16:52
bueno, pues vale, parece que 00:16:53
la aplicación hace lo que tiene que hacer 00:16:56
lo que me han pedido 00:16:58
pues ya está, y efectivamente 00:16:59
el evento por defecto del combo box es justo 00:17:02
el que me interesaba, el de desplegar 00:17:04
y pinchar 00:17:06
ahí es cuando actúa, como veis 00:17:07
no está saliendo el evento por defecto solo cuando 00:17:10
yo despliego, o solo cuando 00:17:12
yo paso el ratón, sino cuando 00:17:14
despliego y pincho, ahí es cuando 00:17:16
salta, entonces cada componente 00:17:18
tiene su evento por defecto 00:17:20
que si uno lo conoce, estupendo 00:17:22
porque ya sabe que 00:17:24
la acción listener entonces está asociado 00:17:26
a ese evento por defecto 00:17:28
que queremos que salte 00:17:29
en relación a hacer otra cosa, que solo porque yo 00:17:31
haga clic pasen cosas 00:17:34
pues la acción listener no me vale 00:17:35
tendré que capturar un key listener 00:17:37
y el 00:17:40
método keyclick, lo que fuera 00:17:41
bueno, pues esta aplicación ya está 00:17:44
a falta de que esa cosa amarilla 00:17:48
que nos ha dejado ahí inquietos 00:17:49
perdona 00:17:51
el último código que he puesto 00:17:54
bajo el botón, el añadir 00:17:58
el listener, este de ahí 00:18:03
adaptión listener, el botón este 00:18:04
vale, pues a ver, lo único que nos 00:18:09
falta, esta aplicación ya la entregamos 00:18:22
estupenda, nos ponen un 00:18:23
un 9, un 10 00:18:25
pero nos quedamos incómodos 00:18:28
porque los avisos amarillos 00:18:30
dan muy mal rollo 00:18:32
entonces vamos a intentar entenderlo 00:18:33
¿vale? 00:18:36
este aviso amarillo es el aviso típico 00:18:38
que ya hemos conocido con las clases 00:18:40
perdón 00:18:42
claro, que o no 00:18:45
estás usando de la manera correcta 00:18:48
o que no te va a dar errores de ejecución 00:18:49
pero igual puedes mejorar tu código 00:18:51
te dice, este te dice 00:18:53
cuidado que JComboBox 00:18:55
es un tipo genérico 00:19:00
mejor si lo parametrizas 00:19:01
marcando 00:19:04
el tipo 00:19:07
de dato, es exactamente 00:19:10
lo mismo que nos sale cuando usamos 00:19:12
una lista, un conjunto 00:19:14
porque ComboBox también es una clase 00:19:15
genérica, si nosotros 00:19:18
entramos en ComboBox, vemos que depende 00:19:20
de un tipo de dato, con la lista 00:19:22
los conjuntos, será más fácil de entender 00:19:24
una lista, ¿es una lista de qué? 00:19:26
de objetos del tipo 00:19:29
al que tú lo has 00:19:30
parametrizado, ¿y un jcombo box? 00:19:32
pues claro, es que un jcombo box 00:19:35
nosotros lo hemos usado 00:19:37
metiendo string directamente 00:19:39
pero un jcombo box tú lo puedes 00:19:40
parametrizar y decir, oye al jcombo box 00:19:42
le voy a meter objetos 00:19:45
de este tipo 00:19:46
y entonces la aplicación 00:19:47
es más 00:19:51
es más útil 00:19:53
me explico, vamos a hacer, para no manchar 00:19:54
este combo box, vamos a hacer 00:19:56
otro combo box ahora parametrizado 00:19:58
que nos van a aparecer dos 00:20:00
combo box en mi 00:20:02
en mi aplicación 00:20:04
vamos a hacer otro 00:20:06
j combo box 00:20:08
lista 00:20:14
películas 2 00:20:15
vale, y ahora este 00:20:18
combo box sí que lo vamos a parametrizar 00:20:29
vamos a decir, a ver, en este 00:20:31
combo box, ¿quiénes van a ir? van a ir 00:20:33
objetos de tipo película 00:20:35
van a ir objetos de tipo película 00:20:37
como si fuera una colección 00:20:41
una colección más 00:20:42
van a ir objetos de tipo 00:20:44
película 00:20:47
entonces, ahora que ocurre 00:20:48
que cuando metamos en este 00:20:51
vamos a añadirle este combo box al panel también 00:20:53
add list a películas 00:20:56
dos 00:21:04
vale, hemos añadido los dos 00:21:04
el parametrizado y el sin parametrizar 00:21:07
ahora si ejecutamos esto 00:21:09
pues aquí están los dos combo box 00:21:11
a priori igualitos 00:21:14
vale 00:21:15
¿cuál es la diferencia entre ellos? 00:21:16
a la hora de usarlos 00:21:20
desde el código 00:21:21
bueno, como este está parametrizado 00:21:22
a este solo se le pueden añadir 00:21:26
objetos película 00:21:28
a este le puedes meter lo que te dé la gana 00:21:29
nosotros le hemos metido stream, le hemos metido títulos 00:21:31
pero como está sin parametrizar 00:21:34
le puedes meter lo que quieras 00:21:36
es como cuando uno hace un list 00:21:37
esto ya lo vimos en colecciones 00:21:39
tú te haces una lista sin parametrizar cualquiera 00:21:40
pues a este list 00:21:43
joder, no le he dado al import 00:21:48
ahí 00:21:50
vale, pues a este list 00:21:51
le puedes meter un alumno 00:21:54
una factura, un string 00:21:56
lo que te dé la gana, pero claro, tienes una lista 00:21:58
que tiene cosas muy distintas 00:22:00
cuando iteres por ella y hagas 00:22:01
los get para sacar, cada vez sacas una cosa 00:22:04
distinta, que casting hacen, ese es un 00:22:06
cachondeo, entonces por eso nunca usamos las listas 00:22:08
sin parametrizar, para decir, oye 00:22:10
que yo me haga una lista, pues que todos los objetos 00:22:12
de la lista sean película 00:22:14
o sea, no sé qué, la parametrizábamos 00:22:16
para forzar que yo solamente pueda 00:22:18
meter película 00:22:20
y no pueda meter cualquier cosa 00:22:22
pues aquí igual, el combo box es 00:22:24
idéntico 00:22:26
en el combo box anterior yo he metido 00:22:27
cadenas de texto, string, y ya está 00:22:30
pero si me da por meterle cualquier burrada 00:22:32
también casa 00:22:34
también lo acepta, y eso me puede 00:22:36
dar errores luego de ejecución, de funcionamiento 00:22:38
pero el combo box tiene cosas 00:22:40
que algunas son string, otros no 00:22:42
entonces cuando yo lo saque con getSelectedItem 00:22:44
a veces me saldrá un string, a veces me saldrá otra cosa 00:22:47
entonces vamos a usar la versión parametrizada 00:22:49
aquí decimos, no, no, añádeme solo objetos película 00:22:53
bueno, ¿esto qué cambiaría? 00:22:57
pues en el del evento del botón, como vamos a usar los dos en paralelo 00:22:59
a este le añadimos el string 00:23:01
y al otro, al lista películas2 00:23:04
Le vamos a añadir 00:23:11
La peli 00:23:14
Add item 00:23:16
Le vamos a añadir la película 00:23:18
Que acabo de crear 00:23:22
Vamos a añadirle la peli enterita 00:23:23
Y me sobra un paréntesis 00:23:28
Y me 00:23:33
Falta una 00:23:36
Llave 00:23:38
Pues yo creo que sí, ¿no? 00:23:41
Ahora, vale 00:23:46
Entonces le voy a añadir la peli entera 00:23:50
Entonces ahora la pregunta que queda es 00:23:51
le he añadido el objeto peli al combo box entero 00:23:53
el objeto película entero 00:23:56
que me va a mostrar, me va a mostrar todo 00:23:57
me va a mostrar el dato, vamos a ver que nos muestra 00:23:59
vale, veis lo que hemos cambiado 00:24:01
a este combo box primero 00:24:04
le hemos añadido el título como tenía, el string 00:24:06
y a este le hemos añadido el objeto película entero 00:24:07
porque está parametrizado 00:24:09
para que reciba solamente película 00:24:11
vamos a volver a ejecutar esto 00:24:13
entonces yo añado el sol 00:24:14
pepito, un momentín 00:24:19
añado 00:24:21
aquí me añade el título 00:24:22
y aquí como veis 00:24:24
¿qué me está añadiendo? 00:24:26
vamos a poner una cacholupa 00:24:30
¿y aquí qué me ha añadido? 00:24:31
me ha añadido algo que os suena 00:24:39
claro, nos suena cuando 00:24:41
hacemos un system.out.println 00:24:44
le añadimos un objeto, le ponemos un objeto 00:24:45
que me muestra 00:24:48
una cosa rarísima 00:24:49
claro 00:24:51
¿qué es lo que 00:24:52
hace el addItem? 00:24:55
cuando mete el comboBots 00:24:58
mete el objeto película internamente 00:24:59
en el combo box, pero lo que te muestra 00:25:01
aquí es como si hiciera 00:25:04
un sistema de aprendizaje, es el toString 00:25:05
lo que te muestra aquí es el 00:25:07
toString de ese objeto 00:25:09
entonces como no hemos hecho el toString de película 00:25:10
pues el toString de 00:25:13
obvias es tan raro, ya lo hemos visto otras veces 00:25:15
entonces vamos a hacer el toString 00:25:17
de película 00:25:19
entonces 00:25:20
vamos a hacer el toString 00:25:22
de película 00:25:31
Poniendo lo que queremos que aparezca 00:25:32
En el combo box, que en este caso va a ser el título solo 00:25:35
Generar tu stream 00:25:38
Solamente con el título 00:25:42
Venga 00:25:44
Película, título 00:25:45
Hombre, quiero que me aparezca todo esto en el combo box 00:25:47
Lo que pasa es que si quiero que me aparezca todo esto 00:25:49
Va a ser un poco feo 00:25:51
¿No? 00:25:53
Añadir película 00:25:55
¿Quiero que me aparezca esto? 00:25:56
No, vamos a poner solamente el título 00:25:58
Venga, pues vamos a poner el toString que tenga solamente la propiedad título. 00:26:01
Ahora ya tenemos un toString. 00:26:09
Ahora ya, cuando probemos la aplicación, añado película. 00:26:13
En ambos me aparece lo mismo. 00:26:27
Aquí porque he añadido yo el string directamente. 00:26:33
Y aquí porque he metido el objeto película, 00:26:36
pero lo que se visibiliza 00:26:38
es el toString del objeto 00:26:40
y el toString es 00:26:42
el título sin más, vale, pues hasta ahí estupendo 00:26:44
con ambos comboVox estoy 00:26:46
consiguiendo lo mismo, bueno pues 00:26:48
¿qué estoy ganando? ¿qué estoy ganando poniéndolo 00:26:50
parametrizado? hasta ahora tampoco he ganado nada 00:26:52
la necesidad de poner toString 00:26:54
nada más, que ni siquiera es una ganancia 00:26:55
me he visto obligada a poner toString 00:26:58
pues que he ganado parametrizándolo 00:27:00
vale, pues lo que ganamos parametrizándolo 00:27:02
es que cuando recuperamos 00:27:06
el objeto, vamos a verlo aquí 00:27:07
vamos ahora al 00:27:09
evento del 00:27:12
de este 00:27:13
vale 00:27:15
pues cuando seleccionamos 00:27:17
lo que 00:27:21
cuando recuperamos lo que está seleccionado 00:27:22
en el combo dos, cuando lo recuperamos 00:27:24
en el primer caso 00:27:25
recuperamos solo el stream 00:27:27
que es lo que yo he metido, el stream 00:27:30
pero en el otro combo dos 00:27:32
cuando debemos seleccionar el item 00:27:34
recuperamos la peli completa 00:27:35
con todos sus datos, entonces luego yo no tengo 00:27:38
que buscar por el 00:27:40
título hasta encontrar el director 00:27:42
es que con el getSelectedItem 00:27:44
del otro combo box, tengo la peli 00:27:46
enterita, porque le he metido antes 00:27:48
la peli enterita, con el addItem 00:27:50
entonces, la versión 00:27:52
si yo en lugar 00:27:54
de este, usar el otro, de este 00:27:59
código, sería mucho más sencilla 00:28:01
sería esta 00:28:03
mi combo box 2 es este 00:28:04
lista películas 2, vale 00:28:09
voy a coger el seleccionado 00:28:11
get selected item 00:28:13
este ya es la película entera 00:28:14
porque yo al combo box le he metido 00:28:17
la película entera, no solo el item 00:28:19
que yo en la interfaz solo vea el título 00:28:21
que es el to stream, no significa que internamente 00:28:23
no esté metida adentro, internamente está 00:28:25
aunque yo solo veo en la interfaz solo veo el titulito 00:28:27
porque he puesto en el to stream el titulito 00:28:29
pero al hacer el get selected item tengo la peli 00:28:30
enterita, entonces aquí ya 00:28:33
Tengo que hacer el casting 00:28:35
Pero le devuelven object 00:28:37
El método 00:28:38
Tengo la peli entera 00:28:39
Pues de esta peli entera me saco el director 00:28:42
Y ya tengo el director 00:28:44
Para ponerlo en el text field 00:28:48
Ya lo tengo 00:28:50
Para no alargar tanto 00:28:52
No meterlo a su vez en el set test 00:28:55
Vamos a hacerlo en dos líneas para que no 00:28:57
Stream director es este 00:28:59
Ya lo tengo 00:29:01
Y ahora ya lo fijo en el 00:29:01
aquí 00:29:03
vale 00:29:06
aquí me fijo el director 00:29:13
vale, y aquí me fijo 00:29:19
lo mismo pero en el título 00:29:24
todo esto 00:29:25
todo esto sería el título 00:29:28
string 00:29:33
tit sería 00:29:43
la película seleccionada del combo box 2 00:29:45
la película, me quedo con su título 00:29:49
y esto es título 00:29:51
bueno, pues son dos alternativas, o una o la otra 00:29:57
bueno, esta me lo 00:30:02
pondría, esto me lo busca 00:30:08
a través del combo box 2 y esto a través de 00:30:10
ah bueno, pues es que a ver 00:30:12
estoy metiendo 00:30:14
en el mismo, espera, perdón 00:30:16
perdón que estoy metiendo esto en el action listener 00:30:17
del otro combo box 00:30:20
captura 00:30:21
lista películas 00:30:23
estoy haciendo dos combo box en paralelo 00:30:25
vale, o sea, este sería 00:30:34
para la capturadora 00:30:39
del primer combo box, que lo tengo que hacer así 00:30:44
pues no hay tutía, porque el primer combo box 00:30:46
solo me saca el título, vale 00:30:48
y ahora, a ver las 00:30:49
llaves 00:30:52
si están bien 00:30:53
esta se cierra ahí 00:30:54
y ahora, captura lista 00:30:59
películas, dos 00:31:03
pues todo este código ahora se queda 00:31:05
más corto 00:31:07
todo este código ahora se queda 00:31:09
me cojo la película 00:31:13
directamente del otro combo box 00:31:15
lista películas 00:31:21
2.getSelectedItem 00:31:22
este 00:31:25
me la cojo de ahí 00:31:25
y hago el casting a película, claro 00:31:28
ala, ya tengo la peli entera 00:31:30
cogida del otro combo box 00:31:33
entera, no solo el título, la peli entera 00:31:34
porque la había guardado entera 00:31:36
y ahora ya en las dos áreas de texto 00:31:38
fijamos 00:31:40
esto y se acabó 00:31:42
y ya está 00:31:45
entonces este código pues es 00:31:49
más claro que este otro 00:31:53
en el que he sacado el título 00:31:56
con el título he recorrido 00:31:57
la colección 00:32:00
una vez que he encontrado 00:32:01
la película la he puesto aquí 00:32:04
con este es que ya directamente 00:32:05
he sacado la peli enterita 00:32:07
del combo box, la peli entera 00:32:10
y ya de esa peli 00:32:11
fijo título y director 00:32:13
entonces me faltaría 00:32:14
añadir esto 00:32:17
aquí, lista películas 00:32:19
dos, adaption listener, captura 00:32:31
lista películas dos 00:32:33
vale, probamos 00:32:34
ala, sol 00:32:47
con este director 00:32:51
aquí están las dos 00:32:52
luna, con este director 00:32:54
aquí están las dos 00:32:58
con este pues nos funciona 00:33:00
con este nos funciona 00:33:02
y con este que hemos añadido nuevo 00:33:04
pues también 00:33:06
vale 00:33:10
los dos funcionan igual 00:33:11
funcionan igual 00:33:13
los dos combo box 00:33:14
pero los hemos hecho 00:33:15
de diferente manera 00:33:17
vale 00:33:18
bueno pues cada componente 00:33:29
de los miles que hay 00:33:33
tiene su historia 00:33:34
y su rollo 00:33:35
y sus particularidades 00:33:36
y hay que investigarlos 00:33:37
y ver cómo funcionan 00:33:38
y probarlos 00:33:39
y vale 00:33:40
este es uno de los más sencillos 00:33:40
y bueno 00:33:42
y solamente 00:33:43
para hacerlo básico 00:33:44
pues ya hemos tenido que 00:33:45
investigar algunas 00:33:46
pequeñas particularidades, ¿vale? 00:33:48
Bueno, ¿alguna duda 00:33:51
o pregunta? 00:33:52
¿No? 00:33:55
Bueno, pues cuando ya empezamos a meter 00:34:03
más 00:34:04
componentes a las interfaces, 00:34:06
pues ya empieza a ser un rollo 00:34:10
el tirar del flow layout, efectivamente, 00:34:13
porque es que ya, si yo ya tengo que hacer 00:34:15
una aplicación de gestión de alumnos, de matrículas, 00:34:17
de no sé qué, no sé cuánto, ya aplicaciones grandes, 00:34:19
pues ¿qué tenéis que hacer? 00:34:21
pues hombre, tirar de que estén todos uno detrás de otro 00:34:22
pues es un rollo 00:34:25
entonces simplemente para que la vista esté más bonita 00:34:26
simplemente para eso, que es lo de menos 00:34:28
pues vamos a poner el builder 00:34:30
lo que importa es luego el diseño que hacemos por detrás 00:34:32
el código que hacemos por detrás 00:34:35
eso es lo que importa 00:34:36
vale, pues 00:34:38
el builder es el plugin que tiene Eclipse 00:34:41
para 00:34:43
realizar de forma más sencilla 00:34:43
interfaces gráficas 00:34:47
el NetBeans lo tiene integrado 00:34:49
directamente, el Intel IE 00:34:51
también, además tiene un plugin para 00:34:53
JavaFX que está 00:34:55
bien, entonces el Eclipse para interfaz 00:34:57
el Builder la verdad es que no es que sea especialmente 00:34:59
bueno 00:35:01
pero bueno, es el 00:35:02
que tiene, Eclipse 00:35:05
vale, pues entonces 00:35:06
nosotros hasta ahora 00:35:09
nuestro Eclipse 00:35:11
está sin tunear, no le hemos 00:35:12
añadido ningún plugin 00:35:15
es decir, ningún componente de 00:35:17
software adicional 00:35:19
de los 2.530 que tiene 00:35:20
porque claro, con el Eclipse se pueden hacer 00:35:23
mil cosas relacionadas con conexiones 00:35:25
con bases de datos, con crear servicios 00:35:27
web, crear 00:35:29
endpoints 00:35:30
millones de historias 00:35:33
entonces para cada una de ellas, para facilitar la tarea 00:35:34
solo para facilitarla, pues tiene componentes 00:35:37
software añadidos que tú los incorporas 00:35:39
y esos componentes te permiten 00:35:41
generar código de forma automática 00:35:43
para eso valen los componentes 00:35:45
software añadidos o plugin 00:35:47
como lo queréis llamar, para generar software 00:35:49
de forma automática, cuidado con ellos 00:35:51
porque el software que te generan 00:35:53
pues luego obviamente hay que revisarlo 00:35:55
bueno pues 00:35:57
esos plugins 00:35:58
pueden incorporar 00:36:01
por dos caminos en general 00:36:04
el más 00:36:07
rústico 00:36:09
pero el más seguro 00:36:13
install new software 00:36:15
pues uno le da aquí 00:36:16
y aquí 00:36:19
te aparecen todos los 00:36:21
repositorios, todos 00:36:23
donde hay 00:36:25
componentes de software para Eclipse 00:36:26
entonces uno tiene que saber en que repositorio 00:36:29
está, buscarlo 00:36:32
una vez que ha seleccionado un repositorio 00:36:33
pues ya 00:36:36
le, vale 00:36:37
una vez que ya 00:36:42
ha seleccionado un repositorio 00:36:42
uy, que feo se me ve esto 00:36:45
wow, está aquí 00:36:48
joder, que no consigo que se me abra 00:36:56
ahí 00:36:58
ahí 00:37:01
que le dé a qué 00:37:03
a que llamas lo de arriba 00:37:05
que no, que yo quiero abrir 00:37:09
esta ventana 00:37:14
o sea, esta, la que me sale en todos los 00:37:14
o sea, quiero abrirla, quiero estirar 00:37:18
ese área de texto, a ver si 00:37:20
que no sé por qué aquí no me sale 00:37:22
a vosotros os saldrá bien, imagino, es por el portátil 00:37:24
O sea, vosotros veréis aquí un listado de cosas 00:37:26
¿No? 00:37:29
Y yo no lo veo porque tengo esa ventana mínima 00:37:30
Que no consigo 00:37:32
Que se me haga más grande 00:37:34
Ah, vale, vale, vale 00:37:37
Ah, es que no tengo internet, vale 00:37:46
Entonces solo me ha sacado esa 00:37:49
Y entonces al sacarme solo esa no ha tenido que agrandarse más 00:37:50
Vale, entonces 00:37:53
Vale, pues entonces 00:37:55
Si vuelvo a hacer la 00:38:19
la búsqueda 00:38:21
me encuentra este, me voy a meter en otro 00:38:27
aquí, vale 00:38:34
no, aún así, me la sigue haciendo tan pequeñita 00:38:35
bueno, pues después de encontrar 00:38:46
aquí os 00:38:48
es que yo no las veo, pero bueno, aquí salen 00:38:49
un montón de 00:38:56
software, cosas que uno puede añadir 00:38:57
pero esto es para buscarlo cuando uno sabe 00:39:00
exactamente que está buscando 00:39:02
esta es la herramienta para 00:39:04
pues expertos, como deberíais ser vosotros 00:39:05
vale, entonces tú aquí dices 00:39:08
Ah, es este plugin el que necesito 00:39:10
Justo este, para no sé qué 00:39:11
Entonces aquí lo marcas 00:39:13
Y le das a next 00:39:15
Te dice las dependencias, lo instalas, etc 00:39:17
¿Vale? Pero no vamos a ir por este camino 00:39:20
De hecho no debería haberlo dado 00:39:21
Lo diría esto 00:39:24
Vale 00:39:25
Si veo donde pone, perdona 00:39:26
Details 00:39:32
Details ahora mismo 00:39:35
¿Dónde pone details? 00:39:37
Details 00:39:38
No veo details 00:39:44
Select 00:39:49
No sé a qué os referís 00:39:54
Ah, aquí 00:39:57
Sí, pero aquí, que marque qué 00:40:05
Para que me salga 00:40:07
Ah, tú dices para que me salga la flechita esa 00:40:16
claro, pero esa es la que llevo buscando 00:40:18
un buen rato y cuando la 00:40:21
mira ahí justo, esa es la que estoy buscando 00:40:22
esta, pero lo más que la puedes tirar hacia abajo 00:40:24
es que no puedes tirarla más 00:40:27
esta sí, no, esto es lo que llevo aquí 00:40:28
pero es que no me deja bajarla más 00:40:30
vale, pero bueno, da igual 00:40:32
en un monitor que 00:40:34
se haya pillado uno bien la resolución 00:40:36
y que esté todo bien 00:40:38
pues aquí se ve un listado, se busca 00:40:39
se marca, etcétera, vale 00:40:42
pero luego hay una forma más patatera 00:40:44
pero más fácil cuando uno no sabe exactamente 00:40:47
qué está buscando, que es el Eclipse Marketplace. 00:40:50
Entonces tenemos el Install New Software 00:40:54
y el Eclipse Marketplace. 00:40:56
Entonces, el Eclipse Marketplace es un asistente 00:41:01
para búsquedas que está montado sobre el Install New Software, 00:41:07
pero es más visual y es un asistente para buscar. 00:41:10
Entonces está montado sobre este cuando tú no te sabes 00:41:13
directamente el nombre del repositorio, 00:41:15
y te sabes directamente el nombre del software 00:41:17
entonces bueno, es un asistente, pues ya está 00:41:18
pues es más fácil buscar las cosas en él cuando vamos buscando 00:41:21
un poco a ciegas 00:41:23
vale, pues en el Eclipse Marketplace 00:41:24
ahora ya es más fácil 00:41:27
lo que pasa es que a mí me va 00:41:29
muy lento todo por el tema 00:41:33
de internet 00:41:35
pero bueno, en el Eclipse Marketplace, pues uno 00:41:35
sí que tiene que tener una idea de lo que está buscando 00:41:38
de cómo se llama, lo pone ahí 00:41:40
hasta que lo encuentra 00:41:43
entonces, si uno 00:41:44
ha buscado previamente 00:41:47
¿de qué manera puedo hacer 00:41:48
interfaces gráficas con swing con java? 00:41:50
pues habrá visto que aparece 00:41:52
window builder por algún lado 00:41:54
entonces busca por window builder y le sale ahí 00:41:56
efectivamente dice, ah, ¿es esto lo que estoy buscando? 00:41:58
pues sí, pues aquí 00:42:01
te lo describe, te dice, te cuenta 00:42:02
ah, pues justo es esto lo que busco 00:42:04
si estuviera ya instalado te diría 00:42:06
instale, si no lo está 00:42:08
le dices install y ala, instalar 00:42:10
entonces aquí te marca 00:42:12
lo que te va a 00:42:16
instalar, tú puedes 00:42:18
elegir quitar cosas, hay algunas que no puedes 00:42:20
porque son requeridas, te las marca ahí 00:42:22
pero podríamos quitar la documentación 00:42:24
yo como esto va tan lento 00:42:26
voy a quitar 00:42:28
la documentación, el group layout 00:42:28
de Seno, todo lo que sea 00:42:32
documentación yo lo voy a quitar 00:42:34
porque 00:42:35
es que a mí me va muy lento ahí cuando descarga 00:42:37
cosas, pero además lo dejo 00:42:40
entonces ahora ya uno confirma 00:42:42
acepta licencia 00:42:44
nada, como es un asistente pues esto ya 00:42:46
más 00:42:48
Vamos a mirarlo aquí 00:42:49
Porque va a ser más rápido 00:43:24
Vale, pues entonces 00:43:25
Esto 00:44:10
Vale, paramos si queréis aquí unos 00:44:11
Un momento mientras 00:44:16
Se carga esto 00:44:18
Y esto lo voy a 00:44:20
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
8
Fecha:
6 de mayo de 2024 - 19:36
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
44′ 23″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
193.80 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid