20250321 EjerAppPedidos_1 - 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 si avanzamos un poquito más en esta aplicación, recordad que el diseño era este, bueno, el diseño era estas pestañitas para hacer cosas y luego el JList en el que se supone que aparece la lista de pedidos, entonces ella por lo que ha optado es descripción, ponemos aquí la descripción y al añadir pedido, el pedido ya aparece aquí, sin productos.
00:00:00
y luego ha optado
00:00:27
cuando el pedido ya existe
00:00:29
pues que tú le puedas añadir productos aquí
00:00:31
es una opción, yo lo que dije es que añadir productos
00:00:33
lo pusierais dentro de actualizar
00:00:35
porque era lo único que íbamos a actualizar, pero bueno da igual
00:00:37
lo que importa es que la funcionalidad esté
00:00:39
vale, pero aquí cuando tú pones el panel
00:00:41
consultar
00:00:43
que estamos aquí, el panel
00:00:44
consultar que es este, la idea
00:00:47
del JList precisamente
00:00:49
es que este campo no haga falta
00:00:51
porque tú aquí tienes
00:00:53
tu lista, seleccionas uno
00:00:55
y cuando le des a consultar
00:00:57
te va a consultar el que está aquí seleccionado
00:00:59
no le tienes que decir al usuario mete el código
00:01:01
porque entonces la aplicación se hace muy
00:01:03
poco agradable
00:01:05
de usar, lo agradable es que él vea
00:01:07
siempre aquí la lista de pedidos
00:01:09
en el panel de actualizar
00:01:10
tú ahora mismo aquí como
00:01:13
la única funcionalidad de actualizar
00:01:15
que dijimos que íbamos a poner es la de
00:01:17
añadir un pedido a un producto
00:01:19
esto pues
00:01:20
en este caso esta funcionalidad añadir producto
00:01:22
sería este producto
00:01:25
al pedido que hayas seleccionado
00:01:26
aquí, al que hayas seleccionado aquí
00:01:28
vale, pues en tu caso como ya
00:01:30
esa funcionalidad de añadir producto a un pedido
00:01:32
que está aquí seleccionado y ahora tienes
00:01:35
puesta ahí, pues el panel de
00:01:36
actualizar se te queda
00:01:38
que lo has
00:01:41
puesto para actualizar descripción
00:01:43
pero de nuevo
00:01:44
esto de buscar no te haría falta
00:01:46
porque tú seleccionarías aquí el pedido
00:01:48
y aquí
00:01:50
vale, con lo cual
00:01:52
vamos a quitar todo lo que sobra
00:01:54
para que se le quede a alguien una versión a medias
00:01:57
si quiere hacerla partir de aquí
00:02:00
en insertar dejamos todo lo que está
00:02:03
ponemos la descripción, añadimos pedido y aparecerá aquí
00:02:06
y ahora añadir producto
00:02:10
se añadirá este producto al pedido seleccionado aquí
00:02:12
aquí no sobra ni falta nada
00:02:14
panel consultar, en el panel consultar sobra
00:02:16
esta etiqueta y este texto
00:02:20
Porque se va a consultar el pedido que esté aquí.
00:02:23
Y a cambio falta, a cambio falta el control para mostrar el resultado.
00:02:26
Pues ese control que sea un textarea, por ejemplo, una ventanita grande.
00:02:32
Pues vamos a poner un textarea, por ejemplo aquí, pues este textarea de aquí va a ser para mostrar el contenido del pedido que hemos consultado.
00:02:37
Vale, luego el panel consultar se nos queda así, el panel actualizar, el panel actualizar, esto de código nos sobra y esto nos sobra y esto nos sobra, porque del que se le va a actualizar su descripción, Pedro, es del que esté, es del que esté seleccionado aquí.
00:02:58
Luego el panel actualizar se queda aquí
00:03:23
Descripción, el huequito
00:03:26
Y cambiamos la descripción del pedido que está aquí
00:03:27
Por este
00:03:30
Y en eliminar, en el panel eliminar
00:03:31
Que es este
00:03:33
También te sobra esto
00:03:35
Y te sobra esto
00:03:37
Porque vamos simplemente a
00:03:39
Eliminar el que esté seleccionado aquí
00:03:42
¿Vale? O sea, se quedan
00:03:44
Pues
00:03:46
Claro, pero bueno
00:03:46
De hecho dijimos que
00:03:49
Bueno, lo pusiéramos aquí debajo y ya está
00:03:51
Pero bueno, da igual lo ponemos ahí
00:03:53
Da igual ponerlo aquí, ponerlo aquí es lo mismo
00:03:56
Lo que nos importa es que va a tener un listener
00:03:58
Bueno, pues de todo esto
00:04:00
¿Qué listener has hecho tú?
00:04:02
Has hecho el de añadir pedido
00:04:03
¿Vale? Has hecho ese
00:04:05
Entonces, el de añadir pedido
00:04:07
Pues ya tiene su cosa
00:04:09
Porque el de añadir pedido, ¿qué tiene que hacer?
00:04:11
El de añadir pedido
00:04:15
Tiene que coger la descripción
00:04:16
Crear un producto nuevo
00:04:18
Perdón, un pedido nuevo
00:04:19
y añadirlo al list, este de aquí
00:04:21
bueno, pues el list
00:04:23
que es el componente desconocido
00:04:25
es un elemento sencillo
00:04:27
porque
00:04:29
ah, bueno, sí, claro, tienes razón
00:04:30
y el map, vale, el list
00:04:33
es un elemento sencillo porque el JList
00:04:35
al igual que el combo box
00:04:37
le podemos
00:04:39
no parametrizar
00:04:41
y el JList que admita cualquier cosa
00:04:43
entonces, lo que pasa
00:04:45
es que como el JList
00:04:47
te muestra
00:04:48
esa cualquier cosa que le mandamos
00:04:50
tendrá que llamar al toString, claro
00:04:52
en este caso tú lo has parametrizado
00:04:54
que está bien para que ya
00:04:57
desde código
00:04:58
desde fase de compilación, desde código
00:05:00
solo nos permita pasarle
00:05:02
objetos pedido, entonces le pasaremos
00:05:04
objetos pedido y nos mostrará
00:05:07
del pedido lo que figura en el
00:05:09
toString, claro lo que figura en el toString
00:05:10
entonces si nos vamos al toString
00:05:13
de pedido que está sin hacer
00:05:15
pues vamos a hacer un toString de pedido
00:05:16
con lo que queramos que muestre el JList
00:05:18
por ejemplo
00:05:20
entonces
00:05:22
nos hacemos un toString
00:05:23
con código y descripción solamente
00:05:25
vale
00:05:28
pedido, descripción
00:05:30
código, como va a quedar muy largo
00:05:32
y no lo vamos a ver
00:05:34
pues vamos a quitarle
00:05:35
vale
00:05:37
a ver
00:05:39
bueno, como voy a empezar a cambiar
00:05:40
y a pegar y me voy a liar con las comas
00:05:49
y las esas, voy a dejarlo así
00:05:52
pero es
00:05:54
descripción, código
00:05:54
lo del código
00:05:57
en realidad es si tú tienes que distinguir pedidos
00:05:59
con la misma descripción, pero sobre todo
00:06:02
el usuario cuando va a consultar
00:06:04
él, el dato que tiene en la cabeza
00:06:05
quiere consultar el de bolis, quiere consultar
00:06:07
el de gomas, entonces es lo que más
00:06:10
lo que pasa es que si tiene varios de bolis
00:06:11
entonces pues sí, la interesa ya
00:06:13
ah, pero dime, ¿qué código es?
00:06:15
es que siempre, aunque es verdad que es la descripción
00:06:17
más intuitiva, el código al final
00:06:19
siempre lo vas a tener en mente, porque si quieres
00:06:21
todos los 300, ni te acuerdas de la descripción
00:06:22
ni te acuerdas de nada
00:06:25
a ver, yo creo que es lo contrario, normalmente el gestor
00:06:25
el secretario que está ahí, no se acuerda de los códigos
00:06:28
por eso se acuerda de las descripciones
00:06:31
claro, pero cuando viene un usuario
00:06:33
o alguien, yo siempre lo pongo en ese sentido
00:06:34
si me habla alguien de
00:06:36
en mi pedido, número, no sé qué
00:06:38
claro, pero el usuario tampoco te va a decir
00:06:40
el código, soy Pepito
00:06:42
este es mi pedido y tú lo buscarás por los parámetros
00:06:44
que te da el usuario, que no son los técnicos
00:06:47
el técnico es el del código
00:06:48
a menos que tú le hayas enviado un email, tu código es este
00:06:50
si quieres una búsqueda, busca por código
00:06:53
claro, a ver, el asunto
00:06:55
es que todo esto pues le falta
00:06:57
lógicamente muchísimos más detalles
00:06:59
para saber exactamente cuál va a ser
00:07:00
el patrón de funcionamiento
00:07:03
claro, es que
00:07:04
todo esto le falta una
00:07:07
fase de análisis y diseño muchísimo más
00:07:08
completa, para decir, a ver
00:07:11
esto va a funcionar exactamente así
00:07:13
vale, que nos falta
00:07:15
bueno
00:07:17
vale, pues ya está, entonces
00:07:18
ahora, el evento
00:07:21
del, el evento del
00:07:23
botón, este añadir pedido
00:07:25
que es el que has hecho
00:07:27
pues aquí que es lo que has hecho
00:07:28
pues en este evento
00:07:30
un nuevo pedido con la descripción
00:07:33
ahora, cuando aparece
00:07:35
algo amarillo
00:07:37
al menos, escuchadle
00:07:37
por dios
00:07:40
porque es que no es que hayas hecho algo mal
00:07:42
que no te vaya a funcionar, pero tienes alguna
00:07:44
práctica de programación muy fea y muy poco
00:07:46
elegante, seguro, si hay algo amarillo
00:07:48
te dice anda que eres un poco
00:07:50
cutre, que te está diciendo
00:07:52
oye perdona, pedidos es
00:07:54
una variable estática, hace el favor
00:07:56
de accederla en el modo estático
00:07:58
hace el favor
00:08:00
y el modo estático es con el nombre de la clase
00:08:02
que da datos
00:08:05
ahora ya esto mucho más profesional
00:08:06
pues metemos el pedido
00:08:08
en nuestros datos
00:08:11
esto sería el equivalente a meterlo
00:08:13
en la base de datos, el equivalente a la base de datos
00:08:15
que no tenemos, y ahora ya
00:08:17
se lo añadimos al list
00:08:19
al list, pero esto del list
00:08:20
¿esto qué es? esto es el list
00:08:23
en realidad es el
00:08:25
modelo que tiene asociado el list
00:08:27
porque el JList funciona, este es nuestro
00:08:29
JList, que tú le has
00:08:31
instanciado aquí, abajo del todo
00:08:33
esto es nuestro
00:08:35
JList
00:08:37
que está instanciado
00:08:38
aquí, que esto no lo tenías puesto
00:08:41
ya que está parametrizado, porque te volvía a salir
00:08:45
el aviso, te decía, hombre, si está parametrizado
00:08:47
cuando la instancia es instancia lo parametrizado
00:08:49
vale, pero cuando instancias el JList
00:08:51
tú puedes
00:08:53
no es que sea obligatorio, pasarle
00:08:55
un objeto modelo asociado
00:08:57
y a través de ese objeto modelo es a través
00:08:59
del que le metes elementos
00:09:01
nuevos y se los quitas, les metes y se los quitas
00:09:03
Bueno, pues este modelo lista pedidos que lo tienes aquí declarado es efectivamente un objeto modelo que lo asociamos al JList. Lo podemos asociar en el momento de instanciarlo como has hecho tú.
00:09:05
O sea, hemos tenido que crear dos cosas, el JList en sí, que es el objeto gráfico y el default list model, que es un objeto que es el que recibe y del que se quitan los elementos y él ya se lo pasa al JList para que lo haga visible.
00:09:24
bueno, pues al JList hay que asociarle este modelo
00:09:36
vale, pues tú lo has asociado
00:09:39
en el momento de instanciarlo
00:09:41
¿dónde está el JList? aquí
00:09:44
en el momento de instanciarlo con el constructor lo has asociado
00:09:49
o bueno, también se puede asociar después
00:09:53
porque este constructor se le puede instanciar así
00:09:55
y ahora tú puedes decirle, oye lista pedidos
00:09:58
punto set model
00:10:01
no, maximum size no, set model
00:10:03
fíjate como modelo
00:10:07
el modelo ese
00:10:09
que no sé cuál era
00:10:12
modelo lista pedido se llamaba
00:10:12
vale, da igual, es lo mismo
00:10:15
me da igual pasárselo ya en el
00:10:21
constructor o
00:10:23
setearlo luego, vale
00:10:25
da lo mismo, ahora ya como
00:10:27
ya el modelo está asociado al list
00:10:29
cada elemento que tengamos que
00:10:31
añadir o remover o eliminar del list
00:10:33
pues se lo hacemos
00:10:35
al modelo que es lo que has hecho aquí
00:10:36
en el evento este
00:10:39
de añadir pedido
00:10:41
añadir pedido
00:10:42
eso lo has añadido
00:10:43
y luego ya
00:10:44
has habilitado el otro
00:10:44
para que se puedan
00:10:45
ya añadir productos
00:10:46
porque ya hay algún
00:10:47
producto añadido
00:10:48
etcétera
00:10:49
entonces
00:10:49
ahora mismo
00:10:49
una aplicación
00:10:50
parte ya lo tiene hecho
00:10:51
que es vamos a añadir
00:10:52
un pedido de bolis
00:10:53
ala
00:10:55
ya está aquí el pedido
00:10:56
con bolis cero
00:10:57
más bonito así
00:10:58
que con tu stream
00:10:58
y ahora ya
00:10:59
vamos a añadir
00:11:01
otro pedido
00:11:03
de rotus
00:11:04
siempre pido lo mismo
00:11:05
pedido rotus
00:11:06
vale, código 0
00:11:08
algo funciona mal en tu aplicación porque no se está actualizando
00:11:10
el código
00:11:13
pero esa parte ya la hicimos
00:11:13
se supone que se tenía que ir incrementando
00:11:16
vamos a ver, el código tendría que ser
00:11:17
en datos
00:11:21
era una variable estática
00:11:23
secuencia que empezaba en 1
00:11:24
y la incrementábamos
00:11:26
al crear el pedido
00:11:28
secuencia
00:11:30
code, se queda incrementada
00:11:33
pedidos
00:11:35
put, secuencia, code
00:11:37
¿y por qué se crea con cero todo el rato?
00:11:39
¿está usando la
00:11:48
secuencia code?
00:11:50
¿cómo la funciona?
00:11:52
la función de insertar pedido
00:11:56
¿la está usando?
00:11:58
efectivamente, tenéis toda razón
00:12:00
y la pista la daba que vale, claro, sí, sí, sí
00:12:02
lo está creando a mano, lógicamente
00:12:03
claro, entonces no
00:12:05
claro, entonces todo esto
00:12:07
claro
00:12:10
efectivamente
00:12:11
es que lo estás creando a mano.
00:12:14
Todo esto te sobra.
00:12:15
No, el P no sobraba porque tienes que pasar un pedido.
00:12:17
Sí, a ver.
00:12:19
Pedido.
00:12:22
Tenemos el pedido y ahora esto es lo que sobra.
00:12:22
Esto es lo que sobra y ahora ya datos, punto,
00:12:25
insertar pedido.
00:12:28
Muy bien, sois muy listos.
00:12:29
Datos, punto, ¿dónde tienes el método de insertar pedido?
00:12:31
¿Lo tienes como privado o qué pasa?
00:12:35
Y borra el constructor de pedido.
00:12:37
Pedido.
00:12:39
¿Dónde está datos?
00:12:39
Private, claro
00:12:44
Tienes como privado, muchacha
00:12:47
Es que hay que estar rápido
00:12:49
Porque yo puedo equivocarme
00:12:58
Si equivocáis y yo pongo privado
00:13:01
Pues ponéis público
00:13:02
Muy bien pensado también
00:13:03
Si es que estoy generando aquí
00:13:09
Unas máquinas de conocimiento
00:13:11
y de destrezas y de habilidades
00:13:13
claro, efectivamente
00:13:14
entonces este constructor
00:13:16
no, no cuestiono
00:13:18
vuestros conocimientos, cuestiono
00:13:22
vuestros hábitos de conducta
00:13:24
que es distinto
00:13:26
vale, entonces ahora ya si aquí
00:13:27
no, a ver
00:13:30
el pedido tenemos que instanciarlo
00:13:34
claro, el pedido hay que instanciarlo
00:13:35
podríamos cambiar datos
00:13:37
claro
00:13:41
Claro, pero entonces tenemos que pasarle los datos.
00:13:44
Claro, pero tendríamos que cambiar
00:13:47
demasiado. Si le pasamos los datos, sí,
00:13:48
y él ya lo instancia. Vale, lo hacíamos.
00:13:50
Pero bueno, como ya lo, para no cambiar
00:13:52
demasiadas cosas, entonces
00:13:54
vamos a
00:13:56
volver a hacer pedido
00:13:58
como público.
00:14:00
Vale, vamos a
00:14:04
hacer pedido como público
00:14:06
y entonces
00:14:08
ahora ya
00:14:09
en app pedido
00:14:11
tenemos una vez que tenemos el pedido
00:14:13
ahora ya veníamos aquí a insertar el pedido
00:14:15
de este que hemos hecho ya
00:14:17
y ya está
00:14:19
vale, ahora ya sí, muy bien visto
00:14:21
es que todo debería hacerse desde el propio insertar pedido
00:14:23
efectivamente
00:14:25
si hay un método insertar pedido
00:14:27
efectivamente es para enmascarar
00:14:28
todo eso al usuario
00:14:31
y proteger el resto del código de instanciaciones
00:14:33
en sitios donde no se deben hacer
00:14:35
pero
00:14:37
no
00:14:37
a ver, lo que pasa es que esto se suele hacer
00:14:40
en un montón de capas para hacer lo mismo
00:14:43
entonces siempre habrá una capa básica
00:14:44
que es la capa de datos
00:14:47
que se llama, en la que tú tengas un método
00:14:48
y le pasas el objeto, luego habrá una
00:14:50
capa intermedia, que es la capa de
00:14:52
transmisión, a la que le pasas
00:14:54
los valores y ella te lo instancia
00:14:56
entonces
00:14:58
pero bueno, olvidados de lo que he dicho
00:14:59
es justo
00:15:02
al final el desacoplamiento
00:15:04
lo que implica es que para hacer algo
00:15:06
que son dos líneas de código
00:15:08
llamas a mil clases
00:15:10
pero a mil literal prácticamente
00:15:11
nunca lo escribo
00:15:14
eso
00:15:15
bueno pues ahora ya sí que nos va a funcionar
00:15:16
instanciando
00:15:20
el este verdad
00:15:21
aquí la verdad es que al usuario le sería más cómodo
00:15:23
si le dejamos el enter porque tener que irse
00:15:26
al ratón al botoncito o al tabulador
00:15:28
a darle al este
00:15:30
o puedes poner que funciona de dos maneras
00:15:31
efectivamente
00:15:35
ahora ya sí
00:15:36
nada, muy bonito, vale
00:15:38
lo que pasa es que esta aplicación ya se quedaba aquí
00:15:40
a la falta del resto de las
00:15:42
funcionalidades, pero
00:15:44
añadir producto, pues añadir producto
00:15:46
está claro que tendrá
00:15:48
añadir producto
00:15:49
tendrá que leer lo que hay aquí
00:15:52
sacar del JLIS
00:15:54
el seleccionado, pero eso es con un método
00:15:56
getSelected, ya está
00:15:59
cuando ya tenemos lo seleccionado
00:16:00
con split, con como sea
00:16:03
extraer el código
00:16:05
pero aquí tenemos una suerte maravillosa
00:16:07
que es como está parametrizado a pedido
00:16:09
lo que sacamos con el get
00:16:11
va a ser el objeto pedido enterito
00:16:13
entonces podemos ir a la propiedad
00:16:15
si no estuviera el JList parametrizado
00:16:17
a pedido y le estuviéramos metiendo el string
00:16:19
como lo mete Ana, te daría el string
00:16:21
entonces tienes que hacer un split y partirlo
00:16:23
pero como está parametrizado a pedido
00:16:26
pues con el get sacamos
00:16:27
el objeto pedido, cogemos el código
00:16:29
y nos vamos al map
00:16:31
sacamos el pedido
00:16:33
con ese código
00:16:35
y a su lista de productos
00:16:36
le añadimos un nuevo producto con esto
00:16:39
y ya está
00:16:40
a ver, lo he metido en el map
00:16:41
insertar pedido y mete en el map
00:16:44
insertar pedido y mete en el map
00:16:47
y luego con esto se pone en el list
00:16:48
de hecho esto es solo para meter en el map
00:16:50
¿vale?
00:16:52
entonces ahora ya lo único que
00:16:56
falta por hacer de esa aplicación
00:16:57
es eso
00:16:59
lo único es eso
00:17:00
saber coger
00:17:04
saber coger del elemento JList
00:17:05
el elemento seleccionado
00:17:09
pero eso a través de un método, ya está
00:17:11
y una vez que está cogido
00:17:12
el elemento seleccionado
00:17:14
a ver
00:17:16
pues
00:17:21
yo di clase en Buenos Aires
00:17:21
seis meses y
00:17:25
dije coger todo el rato porque no
00:17:26
voy a cambiar los hábitos ahora y tampoco
00:17:28
pasó nada
00:17:30
Bueno, pues hay que saber
00:17:31
coger bien las cosas
00:17:39
y sacar del list
00:17:41
el objeto pedido
00:17:43
o el string, depende de cómo lo tengas hecho
00:17:45
y luego la parte que viene ahí
00:17:47
es programar lo que supone que sabéis hacer
00:17:49
y lo que realmente os vamos a evaluar
00:17:51
que es hacer un get en el map
00:17:52
con el código
00:17:55
y ahora ya ese get del map con el código
00:17:56
me da el pedido
00:17:59
pues de ese pedido le saco su lista
00:18:00
de productos con su get
00:18:03
y le añado un producto nuevo
00:18:04
y ya está, y ese evento pues ya está
00:18:06
el de añadir producto
00:18:09
el evento de consultar, pues lo mismo
00:18:09
sacamos del list el pedido
00:18:13
seleccionado
00:18:15
y nos vamos al map, lo recuperamos
00:18:15
y construimos un string
00:18:19
con las propiedades, construimos un string
00:18:20
y ese string se pega al textarea
00:18:23
ahí pegado, ya está, nada más
00:18:24
el evento de actualizar
00:18:26
Pues igual cogemos del JList
00:18:28
El pedido seleccionado
00:18:30
Y le hacemos un set con esta descripción
00:18:32
Listo
00:18:35
Y el evento de eliminar
00:18:35
Pues ya está, cogemos de aquí el pedido seleccionado
00:18:38
Y hacemos un remove en el map
00:18:41
Y en el list
00:18:43
¿El método split que has mencionado?
00:18:45
¿Le metes la coma?
00:18:47
Sí, le metes
00:18:49
Cualquier carácter, el separador
00:18:50
Y te da un array de string
00:18:52
Con todos los sub-string que hay
00:18:54
Separados a través de separados
00:18:57
sin incluir el separador
00:18:58
pues entonces ya se queda poco por hacer
00:18:59
se queda hacer get y set
00:19:02
y put en un map y poco más
00:19:03
vale
00:19:06
bueno
00:19:07
¿alguien necesita que subamos esta versión para arrancarla?
00:19:09
vamos a subirla, si no te molesta
00:19:12
¿no te molesta?
00:19:14
cada uno que la use
00:19:22
tiene que hacer un bizul
00:19:23
de 50 centímetros
00:19:25
¿Por cada apellido que añadamos o por acá?
00:19:32
Cada vez que pruebas la aplicación, 50.
00:19:35
Pues nada, ya puede dejar el ciclo directamente.
00:19:39
Vale, pues vamos a parar.
00:19:42
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 14
- Fecha:
- 25 de marzo de 2025 - 12:50
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 19′ 44″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 94.35 MBytes