Clase 26-04-24- 2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
y
00:10:24
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
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
es
00:29:27
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
se
00:36:00
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
la
00:36:58
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