Clase 17-05-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 la hora de dar comportamiento
00:00:00
uno tiene que pensar
00:00:05
el evento
00:00:06
el evento que va
00:00:08
a accionar sobre los
00:00:10
componentes
00:00:12
vale
00:00:14
si
00:00:15
es el por defecto o no
00:00:18
entonces en este caso
00:00:19
darle aquí
00:00:21
es lo que hacemos por defecto siempre
00:00:24
con un radio button y con el app también
00:00:26
Eso nos lo facilita
00:00:28
Porque entonces es el action perform
00:00:30
Bueno, pues queremos un action perform
00:00:31
Para los cuatro
00:00:34
Para este, para este, para este y para este
00:00:35
Son en realidad cuatro acciones distintas
00:00:37
Pulsar aquí, pulsar en este
00:00:40
Pulsar en este o pulsar en este
00:00:42
Entonces son
00:00:44
Cuatro action perform
00:00:46
Bueno, pues podemos ir uno por uno
00:00:47
Este, le podemos poner ya directamente
00:00:49
Un action perform a partir
00:00:52
Uy, aquí no, aquí
00:00:53
Me aseguro que estoy en el meeting
00:00:55
un event handler, acción performance
00:00:58
y aquí
00:01:00
¿qué queremos? aquí lo que queremos es que
00:01:03
la etiqueta cambie de texto, la etiqueta
00:01:05
¿cómo se llama? vete a saber
00:01:06
la etiqueta se llama
00:01:09
vamos a localizarla
00:01:11
date
00:01:13
vamos a cambiarle de nombre, porque si no
00:01:13
vamos a llamarle
00:01:16
pues nada
00:01:18
¿eh?
00:01:20
label del panel ad, venga, como es la unidad
00:01:22
que hay que cambiar dentro del panel ad
00:01:25
pues hala, venga, pues entonces
00:01:26
nos vamos otra vez, aquí
00:01:28
a Leben Handler
00:01:30
este, Action Performed
00:01:33
estábamos aquí
00:01:35
como que
00:01:38
al text field, porque me lo he añadido al text field
00:01:42
no, esto fuera
00:01:44
esto no lo quiero, vámonos
00:01:44
ahí, vale
00:01:50
ahora sí, vale
00:01:53
vámonos aquí, entonces la etiqueta
00:01:55
que se llamaba
00:01:58
Label
00:01:59
Gracias
00:02:00
Pues le vamos a fijar el texto
00:02:02
Date
00:02:07
Vale, y la etiqueta label add
00:02:08
Estará declarada más abajo
00:02:13
Ese es el problema que tiene, ¿verdad?
00:02:15
Aquí está, entonces en lugar de sacarla
00:02:16
Fuera, que es una opción
00:02:19
Vamos a ponerla más arriba
00:02:20
Esto comentamos el otro día
00:02:22
La peculiaridad en el orden
00:02:24
Que tiene esto, ¿vale?
00:02:27
Ala, por ahora
00:02:30
Ya está, por ahora
00:02:30
Venga, y nos vamos con los demás
00:02:32
Entonces esto si se va haciendo así rápido
00:02:34
En realidad no se tarda nada
00:02:38
Pero bueno, no estamos aquí parando
00:02:39
Y deteniendo
00:02:41
Venga
00:02:43
Este lo mismo
00:02:46
La etiqueta
00:02:48
Add.setText
00:02:58
Y aquí la propiedad
00:03:01
De
00:03:03
La tarea de desarrollo
00:03:03
se llamaba nombre función
00:03:06
pues venga, vamos a ponerle
00:03:08
nombre función
00:03:11
o función
00:03:16
para que no sea tan largo
00:03:18
función, vale
00:03:19
y el otro botón
00:03:25
si, tú en un evento
00:03:28
de donde sea, radio button del que sea
00:03:45
puedes hacer lo que quieras
00:03:46
Claro, o sea, sí
00:03:48
Nosotros podríamos, aquí cuando las hemos creado
00:03:58
En el constructor, en ese momento
00:04:00
Set visible false
00:04:03
Set visible false
00:04:04
Y ahora en este evento, aparte de poner el texto
00:04:06
Pues cada componente que queréis hacer visible
00:04:08
Lo coges set visible true
00:04:11
Efectivamente, en función del efecto
00:04:12
Que tú quieras lograr
00:04:14
¿Vale?
00:04:16
entonces, a ver
00:04:17
el siguiente
00:04:19
que es este de aquí
00:04:20
pues esta propiedad
00:04:22
de training era el título
00:04:30
label add
00:04:32
set test
00:04:39
venga, pues hala
00:04:40
vamos a probar a ver si funciona
00:04:54
lo ejecutamos
00:04:57
ahora mismo es que bueno
00:05:00
podríamos cambiar esto y dejarlo más bonito
00:05:02
efectivamente que esta nos apareciera
00:05:05
sin nada al arrancar y solamente apareciera
00:05:06
o que nos apareciera este por defecto
00:05:09
entonces podríamos cuando hemos creado el meeting
00:05:11
fijarle para que
00:05:13
esté activo
00:05:15
podríamos hacer
00:05:17
y efectivamente pues bueno
00:05:18
el efecto lo tiene
00:05:20
esto cambia y ya está
00:05:22
vale pues con los radio button no hay nada más que hacer
00:05:24
que nos falta
00:05:26
trabajar con el de añadir
00:05:29
y ya está y el de añadir ya es el que coge los datos
00:05:30
y crea la tarea
00:05:33
y se acabó
00:05:34
pues venga nos vamos a
00:05:35
añadir
00:05:38
vale, pues entonces aquí tenemos que
00:05:42
instanciar una tarea de un tipo
00:06:00
u otro en función del radio button que esté instanciado
00:06:02
y con los datos que hemos
00:06:04
cogido del área de texto, entonces tenemos que hacer
00:06:06
pues un switch, podemos hacer un switch case
00:06:08
en función del radio button
00:06:10
que esté activo
00:06:12
en ese momento, entonces
00:06:14
aquí se puede
00:06:16
hacer de muchas maneras
00:06:18
los radio button tendrán un método para ver
00:06:19
si está seleccionado o no
00:06:22
o tendríamos una forma mucho más fácil
00:06:23
que es cuando seleccionamos
00:06:26
uno, podemos aprovechar
00:06:28
que se está llamando a la acción perform
00:06:30
podemos aprovecharlo
00:06:32
y tener ahí una variable
00:06:33
que tenga uno, dos
00:06:36
o tres en función de si está
00:06:38
el meeting, el development o el training
00:06:40
entonces sería más fácil
00:06:41
pero luego el switch case mira esa variable
00:06:44
y así ese switch no tenemos que hacer
00:06:45
si está seleccionado el primero, está seleccionado el segundo
00:06:48
¿me explico?
00:06:50
Repito, aquí como cada vez que pinchamos en un radio button salta un evento,
00:06:53
porque necesitamos que salte porque hay una etiqueta,
00:06:59
cada vez que pulsamos salta un evento,
00:07:02
pues podemos aprovechar para facilitar el resto del código
00:07:03
en poner una variable que se pone a 1, a 2 o a 3
00:07:06
en función de si se ha llamado a este Action Performer
00:07:09
o se pulsó a 1 o al otro o al otro.
00:07:12
Entonces eso me va a facilitar en el botón Añadir
00:07:15
yo miro esa variable y ya está.
00:07:18
En función de la variable que tiene el 1, el 2 o el 3
00:07:20
Sé que se ha activado uno u otro
00:07:23
Pero si no siempre podríamos tirar
00:07:24
De los métodos del radio button
00:07:26
Que tendrá métodos
00:07:29
Para decirme
00:07:31
Si está seleccionado o no
00:07:33
Entonces los radio button lo que pasa es que como están más abajo
00:07:34
Declarados
00:07:37
Y el evento está aquí
00:07:38
Para poder acceder a ellos tendríamos que tenerlos declarados más arriba
00:07:40
Entonces
00:07:43
O sacarlos
00:07:45
Entonces todo lo de radio button lo voy a poner
00:07:45
Antes del botón de añadir
00:07:48
Voy a poner todo antes
00:07:51
control x
00:07:53
que poco me gusta
00:07:57
un control x tan grande
00:07:58
y lo voy a poner aquí antes del
00:08:00
jboop
00:08:02
vale
00:08:05
lo pongo ahí
00:08:07
ah claro, entonces la etiqueta
00:08:09
ahora se me ha vuelto a quedar abajo
00:08:11
sería más fácil haberlo sacado
00:08:12
toda esa clase y ya está
00:08:15
estoy haciendo esto para insistir
00:08:16
para que veáis esa situación rara
00:08:18
que en función de si está antes
00:08:20
o después declarado la clase anónima
00:08:23
lo leo o no, entonces como es una situación
00:08:25
rara y peculiar, estoy insistiendo en ello
00:08:27
para que no se nos quede en la cabeza
00:08:29
entonces la etiqueta se me ha vuelto a quedar abajo
00:08:30
la pongo arriba
00:08:32
vale, ya está
00:08:35
bueno, pues entonces, ahora nos íbamos a
00:08:47
este evento, el del
00:08:50
botón, este de aquí
00:08:52
entonces siempre podemos tirar de los
00:08:53
de los métodos del radio button
00:08:55
para ver cuál está activo, por ejemplo
00:08:57
radio train
00:08:59
training, punto
00:09:02
tendrá un método
00:09:04
tipo getSelected o algo así
00:09:07
para ver si está seleccionado o no
00:09:08
o isSelected o algo así, ¿verdad?
00:09:10
Entonces
00:09:15
A ver, en todo este mogollón de métodos
00:09:15
¿Tendrá alguno
00:10:07
Que nos devuelva un true o false
00:10:09
En función de si está seleccionado o no
00:10:11
Pero vamos, que no nos hace falta
00:10:12
Bueno, no lo encuentro ahora
00:10:15
Pero como no lo vamos a usar
00:10:44
Vale
00:10:45
Entonces
00:10:47
Lo que estábamos diciendo
00:10:49
Aquí se trata de instanciar una tarea
00:10:52
Vamos a instanciar esto, esto es nuestro objeto
00:10:54
Tarea
00:10:56
Tenemos que instanciar una tarea
00:10:58
Para meterla en el map, eso es lo que tenemos que hacer
00:11:01
Tenemos que instanciar una tarea
00:11:03
Para meterla aquí en el map de tareas
00:11:04
Aquí, datos.tareas
00:11:07
Y hacer aquí un put
00:11:09
De lo que toque
00:11:11
Dime
00:11:13
O sea, esto es nuestro objetivo
00:11:19
Instanciar una tarea y meterla en el map
00:11:23
Es que no lo he instanciado
00:11:25
Lo voy a instanciar luego, cuando lo instanciaré
00:11:31
Instanciar un objeto tarea me refiero
00:11:33
Omitin o developmen
00:11:35
sino que los tres son tarea.
00:11:36
Con instancia de una tarea me refiero del tipo que sea.
00:11:39
Entonces, lo que sí puedes declarar.
00:11:42
Tipos tarea, claro, para eso es precisamente la herencia.
00:11:44
Entonces, nuestro action performance es este.
00:11:48
Habrá que instanciar una tarea,
00:11:51
que será un meeting, un development, un lo otro.
00:11:53
Uno de los tres habrá que instanciar.
00:11:56
Y meterlo en esta referencia.
00:11:58
Y ahora, cuando ya lo tengamos instanciado,
00:12:00
lo meteremos aquí.
00:12:02
Entonces, la parte que nos falta aquí es
00:12:04
ver qué botón está seleccionado
00:12:06
y coger los datos
00:12:08
de las áreas de texto para hacer el
00:12:09
new meeting o new development o new lo que sea
00:12:12
y cuando ya lo tengamos, output
00:12:14
bueno, pues entonces
00:12:16
primero tendremos que ver
00:12:18
qué radio button está seleccionado
00:12:19
para en función de eso
00:12:22
a la variable tarea hacerle un new meeting
00:12:23
new development, new lo que sea
00:12:26
vale, pues entonces
00:12:27
lo más sencillo aquí es
00:12:29
marcar en una variable
00:12:31
por ejemplo aquí
00:12:33
Para verla mejor
00:12:37
Selected option
00:12:42
Vale
00:12:53
Esta va a ser la tarea
00:12:54
El radio button seleccionado
00:12:59
Bueno, pues este de aquí
00:13:01
Se va a poner
00:13:03
A 1
00:13:05
Si hemos seleccionado la de meeting
00:13:06
Igual a 1
00:13:10
A 2
00:13:14
Si hemos seleccionado la de desarrollo
00:13:16
Y a 3
00:13:18
Si hemos seleccionado
00:13:25
La de training
00:13:27
Bueno, pues entonces ahora nuestro botón de añadir
00:13:29
El tipo de tarea a instanciar ya es muy fácil
00:13:33
Podemos hacernos ya aquí un
00:13:37
Mi botón de add que está aquí abajo
00:13:39
Mi botón de add
00:13:42
Ahora ya podemos hacer un switch case
00:13:45
En el caso de selected option
00:13:47
Vale
00:13:56
En el caso de que esté seleccionada la tarea 1
00:13:57
aquí arriba del todo
00:14:06
para que
00:14:11
le podemos poner por defecto
00:14:11
el valor 1 porque si no me
00:14:15
vale
00:14:16
pero en cualquier caso tendrá el que yo haya
00:14:18
marcado, bueno pues venga
00:14:23
en el caso de que
00:14:27
perdón
00:14:28
si o cualquiera
00:14:29
si he puesto 1 por poner
00:14:32
algo, era porque luego no me diga
00:14:35
el código, podría no tener un valor
00:14:37
yo sé que va a tener porque sé que iba a haber pinchado 1
00:14:39
pero el código no lo sabe
00:14:41
bueno, pues entonces, en este caso lo que habrá que instanciar
00:14:42
tarea va a ser igual
00:14:45
a un new
00:14:47
meeting
00:14:49
vale, un new meeting
00:14:50
y las propiedades del new meeting, ¿cuáles van a ser?
00:14:53
pues las propiedades
00:14:57
del meeting van a ser
00:14:58
las comunes a tarea
00:14:59
que son su id
00:15:04
que tenemos que resolver y el id donde está
00:15:05
y la nota, la nota es facilísimo
00:15:07
porque la nota la cogemos del área de texto
00:15:10
no hay problema, la nota se coge de aquí
00:15:12
de
00:15:14
ah bueno, no me ha salido
00:15:16
porque tiene error de compilación
00:15:20
así que voy a quitar esto
00:15:21
pero la fecha
00:15:25
la fecha que añade, como yo me complico
00:15:29
si lo hubierais hecho en string, que era lo que esperábamos
00:15:33
el examen es más sencillo, lo cogemos del text fill y ya
00:15:35
si lo hemos cogido en
00:15:38
fecha, pues tenemos que
00:15:40
si está en date, hay que hacer
00:15:41
el parse de ese string
00:15:43
etcétera
00:15:45
vale, que es un rollo, pero eso lo teníamos
00:15:46
ya hecho en muchos
00:15:49
en algún sitio
00:15:51
entonces, vamos a poner aquí
00:15:53
para que no se nos
00:15:55
y así lo vamos a poner
00:15:57
leer fecha java
00:15:58
date
00:16:01
joder
00:16:04
leer fecha java
00:16:07
con la clase date
00:16:36
vale
00:16:37
entonces
00:16:38
aquí teníamos todo esto
00:16:40
todo este rollete
00:16:44
y listo
00:16:46
entonces
00:16:52
nuestro problema aquí es que la fecha
00:16:54
está en el
00:16:57
text field
00:16:59
está en el text field
00:16:59
que se llama el text field
00:17:01
no le hemos cambiado de nombre
00:17:05
y el text field se llama
00:17:06
la fecha está aquí, ese es el problema
00:17:09
vamos a aprovechar y cambiarle el nombre
00:17:11
texto
00:17:13
fecha
00:17:16
pues la fecha está aquí en stream
00:17:16
vale
00:17:20
sí, pero en el otro
00:17:21
¿hay algún text field que
00:17:28
sirva para poner fechas?
00:17:30
ah, sí, ya os entiendo
00:17:35
vale, sí, venga
00:17:36
volvamos a llamar texto
00:17:38
texto
00:17:39
es el texto que va ahí
00:17:42
Vale, pues venga
00:17:44
Entonces
00:17:46
Ahora, el problema aquí que tenemos
00:17:47
Es que el texto nuestro
00:17:50
¿Vale?
00:17:52
El texto nuestro que estamos aquí
00:17:54
Está en string
00:17:56
Y lo queremos convertir a date
00:17:57
Ese es el problema, ¿verdad?
00:17:59
La fecha texto
00:18:01
El problema es que está aquí
00:18:03
Texto.gectest
00:18:04
Aquí está
00:18:07
Y la queremos convertir a date
00:18:09
Pero para eso tenemos este código de aquí
00:18:12
Que yo le digo
00:18:14
Tendré que avisar al usuario
00:18:16
Que la meta es de esta manera
00:18:18
Se lo ponemos en la etiqueta
00:18:19
Y así le avisamos
00:18:21
Entonces aquí
00:18:22
Date, aquí va la fecha
00:18:25
Vale
00:18:27
Y ahora la fecha
00:18:29
Como texto es fecha texto
00:18:31
Y date
00:18:33
La importamos de java útil
00:18:36
Vale, pues ya tenemos la fecha
00:18:37
Y esto me puede lanzar una excepción
00:18:40
La
00:18:42
ala, venga, sí
00:18:43
ya está, vale
00:18:45
pues entonces
00:18:51
ya tenemos aquí nuestra fecha
00:18:52
como texto y ahora ya
00:18:56
tarea va a ser igual
00:18:57
a new
00:19:00
tarea
00:19:01
y ahora ya tenemos
00:19:03
la primera propiedad, el id
00:19:05
no lo hemos resuelto
00:19:07
no está en el área de
00:19:10
no se le pasa en la interfaz
00:19:11
la segunda
00:19:13
vamos a ver en
00:19:14
tarea que digo yo, meeting, perdón
00:19:16
meeting
00:19:20
vale, el constructor de meeting
00:19:21
tenía el id
00:19:23
que está sin resolver, la nota que es
00:19:25
lo que está en el área de texto y la fecha que la acabamos
00:19:27
de conseguir, vale, pues está
00:19:29
incógnita, esto es lo que está en el área de texto
00:19:31
el área de texto, ¿cómo se llama?
00:19:34
el área de texto
00:19:38
estará por ahí abajo, imagino
00:19:39
no le cambio al nombre
00:19:41
que es demasiado pesadez, textarea
00:19:43
se llama
00:19:45
pues venga
00:19:46
el área de texto es
00:19:48
textarea, ahí está la nota
00:19:50
.gectest
00:19:52
y aquí tendríamos la fecha
00:19:54
ya tenemos la tarea instanciada
00:19:59
a falta de resolver
00:20:03
que esto, este id de aquí
00:20:04
¿cuál es?
00:20:07
porque la aplicación no me está diciendo que se meta
00:20:08
por la interfaz, no se está metiendo
00:20:11
entonces nos tiene que dar alguna
00:20:13
indicación más
00:20:14
entonces
00:20:16
la única indicación la tenemos que sacar de aquí
00:20:17
la tarea tiene un identificador
00:20:21
único, no dice nada más
00:20:23
relacionado con identificadores
00:20:25
¿verdad?
00:20:26
entonces, para que sea único lo tenemos que gestionar
00:20:28
nosotros por código, como hemos hecho en otras aplicaciones
00:20:31
hacemos una variable
00:20:33
estática
00:20:35
común ahí, y ahora ya que se
00:20:36
incremente cada vez que se hace una tarea nueva
00:20:39
y usamos esa variable como
00:20:41
identificador único, esa es la estrategia
00:20:43
habitual para crear identificadores únicos
00:20:45
pues
00:20:47
venga, pues entonces aquí nuestro
00:20:49
identificador único
00:20:51
va a estar por ejemplo aquí
00:20:52
como solo tengo una clase es que ni siquiera
00:20:55
necesito que sea
00:20:57
bueno no, espérate, vamos a ponerlo en su sitio
00:20:58
aquí en datos
00:21:03
venga, aquí va a estar
00:21:04
public
00:21:07
static int
00:21:12
identificador
00:21:14
que inicialmente empiece
00:21:16
valiendo cero, vale
00:21:18
Entonces, vamos cogiendo esta variable
00:21:19
Y la vamos dejando incrementada
00:21:22
Cada vez que necesitemos un
00:21:24
Un identificador
00:21:26
¿Vale? Cada vez que lo necesitemos
00:21:28
Pues venga, entonces
00:21:30
Ya tenemos resuelto este problema
00:21:32
Este problema de aquí
00:21:33
Ya lo tenemos resuelto
00:21:36
Que es
00:21:40
Datos.identificador
00:21:41
Y además, ya que te pones
00:21:46
Déjalo incrementado
00:21:48
Para la siguiente
00:21:50
de forma que la siguiente vez
00:21:51
que se instancie
00:21:54
o un meeting o lo que sea
00:21:55
pues el identificador que se dará
00:21:58
será el consecutivo al que hemos dado antes
00:22:00
bueno, para que no empiece en el 0
00:22:02
podemos poner el más más antes
00:22:04
y así empieza en el 1
00:22:06
o inicializarlo en el 1 al principio
00:22:09
lo que queráis
00:22:11
al ponerlo delante significa
00:22:12
primero incrementa y luego da el uso que quieras
00:22:16
primero incrementamos y luego ya
00:22:18
se lo pasamos al constructor
00:22:20
tú aquí lo único que tienes que hacer
00:22:22
es pasarle un entero
00:22:29
porque es lo que te dice el constructor
00:22:31
perdón, un string
00:22:32
el identificador único, si lo queremos funcionar así
00:22:34
vamos a ponerlo como int
00:22:37
pero da igual como se llame
00:22:39
lo único que te dice la lista de parámetros es
00:22:40
pásame un string
00:22:43
tú le pasas el string que quieras
00:22:45
de hecho aquí mírale lo que le hemos pasado
00:22:47
esto
00:22:49
claro, aquí te dice pásame una fecha
00:22:50
aquí de casualidad
00:22:53
mira, pásame una fecha
00:22:55
que aquí lo llama fecha
00:22:58
pero yo aquí le he pasado el objeto de
00:22:59
da igual como se llame, aquí lo que importa es que tú pases
00:23:01
una variable que el tipo coincida
00:23:03
¿eh?
00:23:05
sí, sí, sí
00:23:07
a la hora de pasar parámetros a un método
00:23:09
tú, aquí
00:23:12
claro, es que esto es importante que quede claro
00:23:13
este es el nombre que recibe
00:23:15
el parámetro sólo ahí
00:23:17
sólo aquí, para luego ser usado aquí
00:23:18
para hacer sus cosas
00:23:21
pero luego cuando tú lo llamas
00:23:22
el único compromiso
00:23:25
que tienes es que lo que pases aquí
00:23:26
sea un string, que el tipo de datos case
00:23:28
pero la variable que metes
00:23:30
que se llame como le dé la gana, con que sea
00:23:32
un string es suficiente
00:23:34
y luego esa variable cuando llega
00:23:35
y ya se pone a actuar aquí
00:23:38
el nombre que le da
00:23:40
este método, le da este, es como si le cambiara el nombre
00:23:42
¿vale? por ejemplo
00:23:44
yo aquí cuando lo he llamado le he pasado
00:23:46
una variable que se llama date
00:23:48
esa variable que se llama date ha entrado
00:23:49
y este le cambia el nombre, le dice, ahora te vas a llamar
00:23:52
fecha para mí, te vas a llamar fecha
00:23:54
y ya opera aquí dentro con ese nombre que le ha renombrado
00:23:56
¿vale? pero no tiene que ser el mismo
00:23:58
este es como si renombrara
00:24:00
lo que no hace es cambiar el tipo
00:24:02
el tipo sí que tiene que ser el mismo
00:24:04
es como si renombrara, simplemente
00:24:05
vale, pues entonces
00:24:07
vale, entonces
00:24:11
vamos a cambiarle
00:24:16
el tipo de datos a int, porque si no
00:24:17
genera un identificador único con un string
00:24:20
sería un rollo, tendríamos que sumar
00:24:22
basar a string es un petardo
00:24:24
no nos vamos a complicar si aquí no nos han dicho que sea string
00:24:26
entonces el identificador
00:24:28
este, que sea un int
00:24:30
que si no
00:24:32
nos vamos a volver un poco tontos
00:24:34
con tanto convertir en
00:24:36
este entonces me devuelve
00:24:38
un int
00:24:40
y este me fija un int
00:24:41
me fija un int, vale
00:24:44
y ya está
00:24:48
vale, y ahora ya entonces
00:24:50
el meeting este me cambia
00:24:56
a int
00:24:58
ya está, en development
00:24:59
me cambia a int
00:25:03
y en training me cambia
00:25:05
a int, vale, perfecto
00:25:09
y ahora ya
00:25:15
aquí yo ya le paso
00:25:16
un entero
00:25:19
y aquí me aparece el error de compilación pesada
00:25:19
que me dice, oye, textarea no la veo, claro
00:25:23
porque textarea está declarada aquí
00:25:24
abajo, entonces
00:25:27
en lugar de tanto copiar y pegar
00:25:28
que ya la voy a liar, vamos a sacar
00:25:30
la variable textarea
00:25:32
de variable de campo
00:25:33
esta, a variable de clase
00:25:36
con el botoncito este
00:25:38
y ya está, ala
00:25:39
arreglao
00:25:46
ahora no
00:25:48
aquí, ahora ya
00:25:49
si que la ve, la ve
00:25:52
porque la hemos sacado arriba del todo
00:25:54
la hemos sacado ahí
00:25:55
vale, pues esta era la opción
00:25:56
uno, pero las demás son
00:26:01
donde estamos, el botón está
00:26:03
ahí abajo
00:26:05
aquí, habremos instanciado
00:26:05
la tarea, pero hay que meterla en el map
00:26:09
hay que meterla en el map
00:26:11
vale
00:26:13
hemos instanciado una tarea
00:26:14
y ahora hay que meterla en el map
00:26:17
que es datos
00:26:18
tareas.put
00:26:20
su identificador
00:26:22
que es tarea.get
00:26:24
id y la tarea
00:26:27
ya está
00:26:29
y el
00:26:30
break y se acabó
00:26:32
¿vale? datos, tareas
00:26:35
¿qué me dice? ah claro, que el map
00:26:39
lo tenía como string
00:26:41
y el map ahora es
00:26:43
datos, ¿dónde está? el map ahora
00:26:44
es integer, porque he cambiado
00:26:47
el identificador a entero, el map ahora es
00:26:51
integer, ¿vale? pues entonces
00:26:53
se me ha complicado el código
00:26:58
porque me he empeñado en hacer
00:26:59
que fuera tipo fecha
00:27:01
esto de meeting, entonces
00:27:03
hay que coger el string del campo de texto
00:27:05
convertirlo a date
00:27:07
y ahora ya pasárselo
00:27:09
si lo hubiéramos hecho con string
00:27:11
es que esto habría quedado muchísimo más corto
00:27:13
todo esto no lo habríamos ahorrado
00:27:16
y esto habría sido directamente un new
00:27:17
con el identificador
00:27:19
lo que hay en área de texto y lo que hay en el text field
00:27:21
de aquí habría cogido directamente
00:27:23
lo que hay en el text field, habría sido
00:27:26
una línea de código para instanciar
00:27:27
la tarea, otra para el put
00:27:30
y ya está, eso habría sido la opción 1
00:27:31
del switch case, nada más
00:27:33
pero como la tenemos en date
00:27:35
pues bueno, lo he puesto así simplemente
00:27:37
para que no nos olvidemos del date
00:27:39
pues hemos tenido que leer del text field
00:27:41
convertirlo a fecha
00:27:44
capturando la excepción y luego pasar
00:27:46
vale
00:27:48
y nos falta
00:27:50
el break de ese
00:27:52
de ese switch
00:27:54
el case
00:27:57
acabaría
00:27:59
aquí
00:28:00
vale, aquí acaba el case 1
00:28:02
y ahora
00:28:13
ya que estamos, vamos a poner que la etiqueta
00:28:15
fecha, aparezca también
00:28:17
entre paréntesis el formato para que el usuario
00:28:19
sepa como tiene que meter la fecha, porque si no
00:28:22
el parse no va a funcionar
00:28:23
pues que aparezca esto también
00:28:25
en la etiqueta
00:28:27
y eso lo hacíamos en el radio button, cuando cambiamos
00:28:28
la etiqueta
00:28:31
aquí, vamos a ponerle
00:28:32
que aparezca esto
00:28:36
también, para que
00:28:38
el tío pues lo vea
00:28:39
que meta la fecha en este
00:28:41
formato, entonces vamos a hacer la etiqueta un poco
00:28:44
más grande para asegurarnos
00:28:46
de que
00:28:48
cabe, vale
00:28:48
ahora ya si seleccionamos meeting
00:28:54
sigue siendo
00:28:56
pequeñita la etiqueta, vamos a
00:28:58
hacerla un poquito más grande
00:29:00
si seleccionamos meeting pues
00:29:01
él ya sabe que tiene que poner la fecha
00:29:09
día, mes, año
00:29:11
bueno, pues venga
00:29:12
los de identificador
00:29:15
¿eh?
00:29:17
identificador, datos, punto, identificador
00:29:19
datos, a ver,
00:29:21
¿dónde estamos?
00:29:24
Aquí.
00:29:32
O sea, aquí tienes que pasarle
00:29:34
un identificador único.
00:29:35
Entonces, para eso, hemos hecho
00:29:38
en datos, una variable
00:29:40
estática que empieza haciendo cero
00:29:42
y que cada vez
00:29:43
que necesitamos hacer un identificador, usamos
00:29:46
esa variable, pero la incrementamos
00:29:48
para que se quede incrementada para la siguiente.
00:29:49
Y aquí
00:29:52
me ha salido, cuando yo he ejecutado
00:29:53
esto, me ha salido
00:29:56
aquí en la consola
00:29:58
error, no sé de qué
00:29:59
ah, vale, como no he metido
00:30:02
fecha, me ha dicho, no puedo convertirte la fecha
00:30:04
en esto, vale, cuando yo
00:30:06
he hecho la prueba del software este
00:30:08
cuando he hecho la prueba
00:30:10
en add, pues aquí para que
00:30:13
tengo que meter una fecha, claro
00:30:16
el 23
00:30:18
de julio
00:30:20
de 2024
00:30:22
4. Pongo patatí y la añado.
00:30:24
Ah, ya no me sale error.
00:30:29
Entonces, se habrá creado la tarea.
00:30:30
Ahora mismo es que no puedo consultarla porque esta parte está sin hacer.
00:30:31
Entonces, no puedo consultarla.
00:30:35
Pero se supone que la tarea está metida y ya está.
00:30:36
Entonces, el resto de los switch case, pues es que son iguales.
00:30:39
Más sencillos.
00:30:43
Porque no te voy a convertir fechas ni nada.
00:30:45
Entonces, el caso 2.
00:30:48
El caso 2.
00:30:54
Pues en el caso 2 es solamente esta línea.
00:30:55
La tarea va a ser igual a new development,
00:30:58
donde el identificador único, datos.identificador,
00:31:03
el segundo parámetro de la tarea es la nota,
00:31:12
con lo cual es lo que hay en el área de texto, que es eso,
00:31:17
y lo otro, lo que hay en el otro área de texto,
00:31:20
que es el nombre de la función
00:31:24
pero de compilación
00:31:25
vale, a ver, ahora lo miramos
00:32:08
a ver, este botón ya estaría
00:32:20
¿qué hemos hecho? en el caso 1 se ha complicado
00:32:23
por la fecha, si no, todos los casos serían esto
00:32:26
y ya está, no tendría nada más
00:32:29
entonces, en el caso 1 instanciamos una tarea meeting
00:32:30
y al map, en el caso 2 instanciamos
00:32:35
una tarea desarrollo con los datos
00:32:38
y al map, y en el caso 3 instanciamos
00:32:41
una tarea de training con los datos
00:32:44
Lo que hay en el textarea y en el otro
00:32:47
Y al map
00:32:49
Y ya está, el botón no tiene más que hacer
00:32:50
¿Vale? El botón no tiene más que hacer
00:32:52
Ya está, entonces vamos a
00:32:55
Aunque no podemos consultar para ver si lo ha hecho
00:32:57
Si podemos ver si nos dan errores o no
00:32:59
Entonces, bueno
00:33:01
Aquí función
00:33:02
La que se anota, la que se añade
00:33:05
Vale
00:33:07
Este
00:33:08
Título, nota
00:33:10
Añade, vale
00:33:12
Se supone que está metiendo en el map
00:33:14
Bueno, sí, claro, sería lo ideal
00:33:16
Yo no lo he puesto, pero bueno, lo ideal sería poner aquí
00:33:23
Un set test en vacío
00:33:25
¿Vale? Imagino que text area y text field
00:33:26
Igual también tienen un clear, no lo sé
00:33:29
Si no se hace un set text con una cadena vacía
00:33:31
Y así te queda más bonito, efectivamente
00:33:33
¿Vale? Pero bueno
00:33:35
Luego esto, claro
00:33:36
Se puede hacer mucho mejor
00:33:39
Venga, pues
00:33:41
Con añadir ya hemos acabado
00:33:43
aparte de cositas varias para que quede la interfaz
00:33:45
más bonita, eliminando cuando ya he añadido
00:33:48
una tarea, lo que sea
00:33:49
ahora nos queda
00:33:50
¿dónde estamos?
00:33:52
el otro panel
00:33:56
nos queda el panel de
00:33:57
este panel está completo
00:34:00
el de este
00:34:02
pues venga, este panel de aquí
00:34:03
este
00:34:05
vale
00:34:08
ahora
00:34:08
vamos a añadir
00:34:12
los componentes a este panel, lo que pasa es que
00:34:14
menudo rollo, porque se me van a ver los de abajo
00:34:16
en el momento de
00:34:18
ah bueno
00:34:19
claro, me faltan, no hemos hecho la opción
00:34:24
del menú, que te lo cambie de visible
00:34:26
uno a otro, porque tal y como lo tenemos ahora
00:34:28
vale, tal y como lo tenemos
00:34:30
ahora mismo está
00:34:34
yo aquí no he hecho nada todavía
00:34:35
entonces está siempre visible el primero
00:34:38
vale
00:34:40
entonces vamos a añadir los eventos del
00:34:41
menú para ver al menos
00:34:44
que cuando doy a add me aparece esto
00:34:46
y cuando doy a search me aparece vacío
00:34:48
¿vale? porque ahora mismo
00:34:50
venga, vamos a añadir los eventos
00:34:52
del menú, entonces
00:34:54
al switch case, sí
00:34:56
el switch case que está aquí
00:35:01
¿a qué parte?
00:35:04
a la derecha es esta
00:35:19
he cogido lo que hay en el text
00:35:20
aquí y en el textarea aquí
00:35:28
porque primero va la nota y luego va el otro
00:35:31
en todos ellos, ¿verdad? primero va la nota
00:35:34
y luego va el otro
00:35:36
luego va el textfield
00:35:38
vale
00:35:39
pues venga, vamos a hacer los eventos del menú
00:35:41
aquí
00:35:44
el menú que están
00:35:45
aquí
00:35:48
la opción añadir
00:35:48
venga, vamos a añadirle un evento
00:35:51
vale, pues cuando le damos
00:35:54
añadir, ¿qué queremos? que se haga visible
00:35:59
el panel de añadir
00:36:01
el panel de añadir se llama
00:36:03
panel
00:36:05
add, ¿verdad?
00:36:09
panel
00:36:12
add se llama, sí, vale
00:36:18
pues entonces
00:36:20
en el evento
00:36:21
del menú
00:36:24
que está, vámonos a él
00:36:25
aquí
00:36:28
vamos a hacer
00:36:29
panel
00:36:32
add, punto
00:36:34
No lo ve porque está declarado abajo
00:36:35
Lo vamos a sacar fuera
00:36:40
Para no andar copiando y pegando arriba
00:36:41
Que es un coñazo
00:36:44
Y como ya sabemos lo que pasa
00:36:45
Pues
00:36:48
Venga, vamos a sacar los paneles
00:36:48
Arriba los dos
00:36:52
El panel se va
00:36:55
A variable de clase
00:36:56
Y el panel se va a variable de clase
00:36:58
Entonces
00:37:01
Ahora ya sí
00:37:03
Cuando nos vamos a
00:37:04
la opción de menú aquí
00:37:07
a esta
00:37:09
pues ahora panel add
00:37:13
punto set
00:37:15
visible true
00:37:19
y vamos a poner el otro
00:37:21
panel search por
00:37:26
set visible
00:37:27
false
00:37:30
vale
00:37:34
y en la otra opción del menú
00:37:37
está justo lo contrario
00:37:40
justo al revés
00:37:44
eso yo lo tenía hecho con fijarlo
00:37:51
con set content panel en lugar de con esto
00:37:58
pero vamos, esto entiendo que funcionará
00:37:59
igual, add y search
00:38:02
vale, entonces los eventos
00:38:07
del menú ya tienen comportamiento, para decidir
00:38:09
que panel se ve y que panel no se ve
00:38:11
vamos a probarlo, venga
00:38:13
pues sale
00:38:17
pues efectivamente funciona
00:38:17
cuando yo le doy a add me aparece este
00:38:21
cuando le doy a search me aparece este
00:38:22
que ahora mismo no tiene nada
00:38:25
vale, ahora mismo no tiene nada
00:38:26
podemos arrancar, hacer la aplicación
00:38:28
al principio en el constructor
00:38:30
para poner los dos a false
00:38:32
y así al principio cuando arranca no veo nada
00:38:34
hasta que yo no haga esto, vale, podríamos
00:38:36
aquí hacer un
00:38:38
en el constructor
00:38:40
pues poner aquí antes que nada
00:38:41
panel add.set
00:38:44
visible
00:38:46
false
00:38:47
que no se vea ninguno de los dos
00:38:49
.set
00:38:53
visible
00:38:56
Falso
00:38:57
Entonces si arranco así la aplicación
00:38:59
No le ha gustado
00:39:02
Y no sé por qué no le ha gustado
00:39:05
Null pointer exception
00:39:07
Ah, porque no está instanciado el panel
00:39:11
Lo he puesto demasiado arriba
00:39:12
El panel está instanciado más abajo
00:39:14
El panel está
00:39:16
Ahí está instanciado
00:39:19
Vale
00:39:20
Y el otro
00:39:20
Aquí está el otro
00:39:23
Pues aquí abajo del todo
00:39:28
y así no hay null pointer exception
00:39:30
venga, pues ahora la probamos otra vez
00:39:33
y efectivamente
00:39:36
no se ve nada, porque están los dos a falso
00:39:37
el constructor acaba de arrancar, lo ha construido
00:39:39
todo, pero los dos paneles están a falso
00:39:41
cuando lo damos a este
00:39:43
pues este se ve
00:39:45
cuando lo damos a este, se ve el otro que no tiene nada
00:39:47
venga, pues vamos a empezar a construir el segundo
00:39:49
panel, ahora
00:39:53
el segundo panel, este
00:39:54
de búsqueda, este es
00:39:57
el que
00:40:00
Tiene joy, de verdad voy a tener que poner
00:40:01
Los componentes viendo debajo los otros
00:40:06
Yo lo que he hecho ha sido arrastrar el panel hacia abajo
00:40:08
Claro, lo puedo mover un rato
00:40:15
Y luego volverlo a subir, pero
00:40:16
Tela
00:40:18
Cada vez que abriamos, tenemos que haberlo hecho como un
00:40:19
Tablet para
00:40:22
Más cómodo, a la hora de ponerlo, más cómodo
00:40:23
Porque es que si no, aquí colocarlo con unos debajo
00:40:26
Es que no me puedo creer que tenga que ver
00:40:28
Los otros debajo todo el rato
00:40:30
Pero bueno, a ver
00:40:31
vamos a dejarlo aquí pequeñito
00:40:34
y luego ya lo subimos
00:40:43
después cuando acabemos
00:40:45
porque si no es un rollo
00:40:46
venga, pues a ver, el panel de búsqueda
00:40:47
el panel de búsqueda tiene
00:40:50
el botoncito
00:40:53
una etiqueta con un combo box
00:40:55
aquí
00:40:57
un componente
00:40:59
para ver las tareas que se han encontrado
00:41:01
que podía ser un combo box
00:41:03
o un jlis que es muy parecido
00:41:05
Un combo box es el que más hemos usado
00:41:07
Entiendo que en el examen es el que usaríais
00:41:10
Si cogéis este, porque el otro tenéis que investigarlo
00:41:12
Y aquí un área de texto
00:41:15
Pues estos combos son los que hay que poner
00:41:16
Pues venga, vamos seguidos uno tras otro
00:41:18
Primero, botón
00:41:20
Aquí, ahí no
00:41:22
Vamos, que no se nos olvide el panel en absolute
00:41:24
Venga
00:41:27
Botón
00:41:29
Texto
00:41:32
Search
00:41:34
Vale
00:41:35
botón, por rapidez no voy cambiando nombres de variables
00:41:47
si luego nos hace falta lo voy cambiando, bueno, luego nos queda
00:41:51
una etiqueta que ponga filtro, el combo box, encontrados y nota
00:41:55
pues venga, una etiqueta
00:41:59
que ponga aquí, filtro
00:42:02
y un combo box, para desplegar
00:42:06
algo, otra etiqueta
00:42:20
que ponga aquí ítems found
00:42:26
con otro combo box
00:42:28
para ver las tareas que ha encontrado
00:42:40
y un área de texto para poner
00:42:42
la nota de esas tareas
00:42:49
uy
00:42:51
he puesto un text field en vez de un text
00:42:58
área, ¿verdad o no? ah, no, es un text área
00:43:03
vale, y una etiqueta
00:43:06
con nota
00:43:10
bueno, pues los componentes
00:43:12
están
00:43:21
ahora hay que decidir
00:43:22
¿Cuál tiene evento y cuál no?
00:43:26
Entonces voy a volver a hacer grande el de abajo
00:43:29
para comprobar a ver si se ve todo bien.
00:43:34
Opción añadir, correcto.
00:43:41
Y buscar, correcto.
00:43:43
Vale.
00:43:45
Bueno, pues en la de buscar, ¿cómo se supone que funciona esto?
00:43:46
Pues vamos a ver.
00:43:49
En el filtro, aquí hay que el usuario elige el filtro de cuatro opciones.
00:43:50
Con lo cual el combo box de aquí va a tener solo estas cuatro cosas.
00:43:54
Es un combo box estático.
00:43:57
hay que añadir esas cuatro cosas y listo
00:43:58
entonces cuando
00:44:00
si damos a all
00:44:02
hay que mostrar todas las tareas del map
00:44:04
y si damos a cualquiera de las otras
00:44:06
hay que mostrar solo las tareas
00:44:08
que sean de ese tipo, ya está
00:44:10
entonces se muestran
00:44:12
al pulsar
00:44:14
entonces
00:44:16
el que tiene evento es el botoncito por ahora
00:44:17
el botoncito search mirará
00:44:20
lo que hay en el combo box seleccionado
00:44:22
y en función de eso saca del map una lista
00:44:24
de tareas y con esa
00:44:26
lista de tareas va rellenando el combo box
00:44:28
de aquí, y ya está, las va
00:44:30
rellenando, y ahora ya
00:44:32
este combo box una vez que esté relleno con
00:44:34
las tareas, no, esto
00:44:36
es o un JList o un combo box
00:44:40
¿vale? lo que pasa es
00:44:42
que el JList su aspecto es igual que el textarea
00:44:44
el JList es como
00:44:46
un JTextarea, pero que cada línea
00:44:47
la puede seleccionar por separado
00:44:49
para, como un combo box
00:44:51
vamos, vale, y ahora ya
00:44:53
entonces este combo box también tendrá evento
00:44:56
que será cuando yo lo seleccione, me dice la nota
00:44:57
de esta de aquí, entonces el primer evento va a ser
00:44:59
primero vamos a añadir al combo box
00:45:01
las cuatro opciones fijas
00:45:04
que va a tener, all training, pues venga
00:45:05
vamos a hacerlo primero, vamos a añadir
00:45:07
al
00:45:11
¿dónde estamos? ahí
00:45:12
vamos a añadir al combo box
00:45:15
este
00:45:18
que hemos puesto
00:45:18
que a saber dónde está
00:45:20
ya ni voy a cambiar nombre de variable
00:45:23
ni nada porque es que es muy tarde
00:45:25
este debe ser, vale
00:45:26
Este combo box, al menos vamos a parametrizarle
00:45:32
Para string, que tanto amarillo da mal rollo
00:45:35
Vale, pues a este combo box
00:45:37
Vamos a añadirle
00:45:42
Las cuatro cositas
00:45:43
Que tiene que tener
00:45:46
Combo box, add item
00:45:47
All
00:45:51
Y lo mismo pero con las otras
00:45:52
Esto sería
00:45:59
Meetings, tareas de meeting
00:46:07
Tareas de desarrollo
00:46:09
Developments
00:46:14
Developments
00:46:15
Y tareas de training
00:46:17
Trainings
00:46:20
Vale
00:46:23
Option search
00:46:24
Aquí están todas
00:46:28
Esto ya está
00:46:29
Este combo box no tiene evento
00:46:31
Cuando uno cambia solamente vale para que luego el botón de search
00:46:33
Lo coja de aquí
00:46:36
Pero ese sí que tiene evento
00:46:37
Pues venga, vamos a capturar este evento
00:46:39
El del botoncito de búsqueda
00:46:41
Entonces
00:46:44
Aquí
00:46:46
Panel search
00:46:50
Voy a hacer pequeñita este
00:46:53
Voy a hacerlo pequeñito, va a ver lo de abajo
00:46:55
Porque si no, aquí no veo una caca
00:46:57
Ahí, vale
00:46:59
Venga, buscar
00:47:00
Pues venga
00:47:02
Vamos a añadir un evento a buscar
00:47:04
Vale, pues aquí lo primero que tenemos que hacer
00:47:07
Es sacar lo que haya seleccionado en el combo box
00:47:11
Y en función de si es all, si es lo que sea
00:47:13
Pues tenemos que ir recorriendo
00:47:15
El
00:47:18
el map
00:47:19
y recoger los datos de las tareas
00:47:22
para irlo añadiendo al otro combo box
00:47:25
entonces nos daba información de de qué manera
00:47:27
tenemos que construir esa información
00:47:29
nos lo dice aquí, nos dice
00:47:30
la lista
00:47:33
de tareas se mostrará con el formato
00:47:35
el identificador
00:47:37
dos puntos, el campo propio
00:47:38
y
00:47:40
la fecha, el nombre
00:47:42
o el título, vale, pues venga
00:47:45
entonces tenemos que
00:47:47
Formar, vale, pues venga
00:47:48
Nos vamos
00:47:51
Esto ya es tarea de programa
00:47:52
Pues venga
00:47:55
Tipo tarea
00:47:57
El tipo tarea la sacamos del combo box
00:48:03
Adiós
00:48:05
Tipo tarea
00:48:08
Vale, tipo tarea es
00:48:13
Igual a el combo box
00:48:15
Se llamaba, el combo box
00:48:18
Primero, se llamará combo box
00:48:19
Normal, imagino, ¿no?
00:48:22
Este sí, se llama combo box normal, pues venga, de aquí sacamos del combo box punto
00:48:24
get selected item, que como está abajo lo vamos a sacar arriba, lo vamos a sacar todo
00:48:31
arriba para que no tengamos que andar, venga, este arriba, este combo box arriba y este
00:48:39
área de texto arriba, efectivamente, porque cuando nosotros saquemos del map tenemos que
00:48:47
ver si esa tarea de qué tipo es
00:48:58
porque si es del tipo correcto la añadimos
00:49:00
o no, es justo efectivamente lo que hay que usar
00:49:02
claro
00:49:04
justo eso, entonces
00:49:04
a ver, ahora ya nos vamos
00:49:08
al evento este de
00:49:10
tipo tarea, va a ser lo que haya
00:49:11
en el combo box
00:49:14
punto get
00:49:15
selected item
00:49:18
vale, entonces
00:49:19
y casting a string
00:49:22
a ver
00:49:24
cómo podemos construir esto para no hacer aquí
00:49:26
Demasiado
00:49:28
Selected index, no, item
00:49:29
Item
00:49:32
Ahora sí
00:49:34
¿Cómo podemos construir esto?
00:49:36
¿Qué te ha pasado?
00:49:38
Se te ha borrado todo
00:49:41
Ese gesto suele estar
00:49:42
Correspondido a se me ha borrado todo
00:49:44
Madre mía
00:49:45
Vale, pues entonces
00:49:47
Vamos a recorrer el map
00:50:04
este es el string en el que vamos a formar
00:50:05
el texto a meter en el combo
00:50:12
en el combo box
00:50:14
este es el string
00:50:16
en el que vamos a formar el texto que va a ir al combo
00:50:17
¿vale?
00:50:20
y este string lo vamos a formar
00:50:22
leyendo la tarea correspondiente
00:50:24
pues venga, vamos a recorrer el map
00:50:26
pues ala
00:50:28
el map se llama datos.tareas
00:50:29
y le vamos a hacer el método
00:50:35
EntrySet para que nos devuelva
00:50:37
Esto
00:50:40
Un EntrySet
00:50:41
Un set
00:50:43
De
00:50:45
EntrySet de
00:50:47
Integer
00:50:49
Tarea
00:50:51
Eh
00:50:52
Tareas
00:50:55
Voy a poner así
00:50:57
Vale
00:51:00
Y esto se importa
00:51:01
Y esto
00:51:04
Se importa
00:51:06
Sí, tienes razón
00:51:10
Que me he escrito ahí a lo bestia
00:51:22
Ahora sí, justo
00:51:26
Vale, pues entonces ahora recorremos este for
00:51:27
Para cada una de estas
00:51:31
Para cada una de estas en
00:51:42
Task
00:51:51
Vale, pues vamos a ver
00:51:53
Si texto, si tipo tarea
00:51:56
Fuera igual a all, si tipo tarea
00:52:05
Es igual a all, tenemos que coger
00:52:07
Esa tarea, me da igual del tipo que sea
00:52:09
Y no hay que hacer instance of
00:52:11
Entonces, si
00:52:12
El tipo de tarea que tengo
00:52:14
En el filtro resulta
00:52:19
Que es igual a all
00:52:21
Pues entonces ahora ya
00:52:23
En el texto combo
00:52:27
lo único que tengo que poner
00:52:29
es
00:52:32
el identificador
00:52:33
de esta tarea
00:52:36
bueno, espera, no, lo voy a hacer
00:52:38
vamos a convertir
00:52:43
la tarea correspondiente
00:52:45
y luego ya, porque
00:52:47
la propiedad adicional
00:52:48
no está en la clase
00:52:52
tarea, entonces tendría que hacer un casting igual
00:52:53
para llegar a la propiedad adicional
00:52:55
entonces vamos a hacer, primero convertir
00:52:57
la tarea que sea. Y así se nos va a ayudar
00:52:59
el trabajo. Vamos a hacer
00:53:02
si t.getValue
00:53:04
si t.getValue
00:53:06
vamos a ver si es
00:53:09
instance of
00:53:11
training
00:53:14
training, vale.
00:53:17
Si es una tarea de tipo
00:53:22
training. Vale, pero es una tarea de tipo training
00:53:23
entonces construimos
00:53:25
el texto combo
00:53:27
concatenando
00:53:28
t.getValue
00:53:30
concatenado con
00:53:36
dos puntos
00:53:40
concatenado con
00:53:41
t.getValue
00:53:43
getId
00:53:44
concatenado con dos puntos
00:53:46
ahora me voy abajo
00:53:51
el getValue porque la tarea está en el valor
00:53:52
es decir, este es el map
00:53:58
GetValue tiene el objeto tarea
00:53:59
Bueno, todo esto
00:54:02
También lo puedo sustituir por
00:54:06
TGetKey sin más, porque está replicado
00:54:07
También en la
00:54:10
En la clave, o sea, esta es la tarea
00:54:11
Que estoy recorriendo
00:54:14
Porque está en el valor la tarea
00:54:15
Pues su ID, ahora después de su ID
00:54:17
¿Qué quiero? Después de su ID
00:54:20
Quiero su
00:54:22
Su otra propiedad
00:54:24
Que es la nota
00:54:26
Jolines
00:54:27
la nota
00:54:29
vale, y ahora
00:54:31
si es training, la otra propiedad
00:54:35
es la fecha, pero claro
00:54:37
para poder hacer el get fecha tengo que
00:54:39
hacerle un casting a date, pero no pasa nada
00:54:41
porque he hecho el instance of antes
00:54:43
entonces concateno con esto
00:54:45
y ahora me hago
00:54:47
me hago un casting a training que
00:54:48
no hay ningún problema porque te get value
00:54:54
es training, me hago un casting a training
00:54:56
no, no, no, lo quiero porque
00:54:58
esa es la consulta, lo quiero aquí
00:55:06
lo quiero en el combo box
00:55:08
aquí
00:55:10
lo quiero aquí y luego ya
00:55:10
cuando seleccione aquí
00:55:14
la consulta de esa en particular
00:55:16
va a nota
00:55:18
ah, perdón, perdón, perdón, sí, que la nota te aparece
00:55:19
ahí cuando seleccionas, vale, vale, vale
00:55:22
sí, sí, sí, sí, perdón
00:55:23
que es que ya sabéis que hablar y pensar
00:55:25
vale, pues entonces
00:55:28
la nota la va a aparecer
00:55:30
después, tienes razón
00:55:32
vale, pues entonces
00:55:34
concateno a training
00:55:36
T punto get value
00:55:38
Y ahora al haber hecho un casting
00:55:39
Con training
00:55:42
De aquí ya puedo sacar la fecha
00:55:43
Punto get fecha
00:55:45
Training T get value
00:55:48
Espérate
00:55:54
Ahí
00:55:57
Y ahora
00:55:58
Me debería dejar coger
00:56:01
Ah, que training
00:56:03
Tiene título, vale, que era meeting
00:56:05
La que tenía fecha
00:56:07
Venga, pues título
00:56:08
venga, pues entonces
00:56:09
si, me hace falta igual
00:56:13
porque el get título solo está en training
00:56:16
claro, solo está en training
00:56:18
vale, pues entonces, si la tarea es training
00:56:19
lo que tiene que aparecer en el texto
00:56:22
combo es esto
00:56:24
y he podido acceder al get título porque he hecho el training
00:56:25
y ahora, la siguiente pregunta
00:56:28
sería, ¿esto tiene que ir
00:56:30
al combo o no? pues tendrá que ir al combo
00:56:32
si tipo tarea es all o training
00:56:34
solo en ese caso, entonces ya podemos
00:56:36
hacer, si
00:56:38
tipo tarea es igual
00:56:39
a training o tipo tarea
00:56:43
es igual a all, entonces al combo de resultados
00:56:55
vale, pues en ese caso lleva
00:56:59
al combo de resultados que va a ser combo box 1
00:57:13
conociendo como llama
00:57:17
swing a las cosas, va a ser este supongo, efectivamente
00:57:20
Vamos a añadirle
00:57:24
Esto no
00:57:26
Vamos a añadirle
00:57:28
Texto combo
00:57:31
Ala, ya está
00:57:33
Y el combo box
00:57:43
Que está aquí, vamos a parametrizarlo
00:57:45
A string para quitar tanto amarillo
00:57:47
Porque al fin y al cabo va a ir a un string en él
00:57:49
Y vámonos
00:57:51
Vale, pues exactamente lo mismo
00:57:54
Si es lo mismo
00:58:05
lo podemos copiar
00:58:08
si es meeting o development
00:58:09
cambiando la propiedad
00:58:13
por título, por función
00:58:16
esto, el código se puede dejar
00:58:17
más bonito en lugar con id, con el save
00:58:22
se pueden agrupar cosas
00:58:24
el código se puede dejar mucho más bonito
00:58:26
pero no lo vamos a
00:58:28
vamos a hacer que funcione
00:58:29
y ya está, si es meeting
00:58:32
pues si es meeting, hacemos casting a meeting
00:58:33
y la propiedad
00:58:36
que tenemos que sacar no es título
00:58:38
sino que es fecha
00:58:40
get fecha
00:58:42
vale
00:58:48
que va a hacer
00:58:50
una conversión a string explícita
00:58:51
al concatenar, va a convertir el date
00:58:53
a string, a ver como lo convierte
00:58:56
si no habrá que llamar al método despedido
00:58:58
que lo convierte, pero bueno
00:59:00
y si es meeting
00:59:01
aquí
00:59:04
y ahora
00:59:08
si la tarea
00:59:10
es la de desarrollo
00:59:12
development
00:59:14
pues entonces
00:59:16
me haces un casting a
00:59:18
development
00:59:20
y aquí coges
00:59:22
la propiedad de development que era función
00:59:26
creo, no, no era función
00:59:28
era nombre función
00:59:30
ahora sí
00:59:32
y esto si es
00:59:37
development
00:59:39
lo que pasa es que en el combo iba con s
00:59:43
entonces si es trainings, meetings
00:59:45
o developments
00:59:48
vale, vamos a hacer una primera prueba
00:59:49
a ver si al menos consulta
00:59:53
pero antes tengo que
00:59:55
devolver el panel que había hecho
00:59:57
pequeñito
00:59:59
a hacerlo un poco más grande
01:00:00
ahí
01:00:02
vamos a ver si hay suerte y consulta
01:00:04
vamos a notar que pasa una cosa
01:00:07
rara porque cada vez que hemos hecho una consulta
01:00:09
no borramos los elementos del combo box
01:00:12
de antes, entonces nos va a ir añadiendo abajo
01:00:13
vamos a tener que añadir un remove item
01:00:15
pero vamos a probarlo así
01:00:17
para ver, pues Ala
01:00:18
añadir, vamos a añadir una tarea
01:00:21
de meeting
01:00:23
que sea
01:00:24
el 1 de enero
01:00:26
de 2025
01:00:28
nota
01:00:30
tarea
01:00:32
tarea 1, ya está
01:00:34
añade, vale
01:00:37
vamos a añadir
01:00:38
una de desarrollo
01:00:40
cuya función sea
01:00:43
pues cualquier cosa
01:00:44
función compilar
01:00:47
la tarea se llama
01:00:49
dos
01:00:51
vale, y vamos a añadir un entrenamiento
01:00:52
cuyo título sea
01:00:56
pues cualquier cosa
01:00:57
por ejemplo
01:00:59
y tarea tres
01:01:02
tenemos tres tareas añadidas, una de cada
01:01:04
vamos a consultarlas, a ver si están
01:01:07
venga, consultamos
01:01:09
vamos a consultarlas
01:01:11
todas
01:01:13
pues sí, nos sale la que tenemos
01:01:14
el miércoles 1 de enero, como veis
01:01:17
la conversión explícita, implícita
01:01:19
string, que quede
01:01:21
muy bonita, si no os gusta de otra manera
01:01:23
tendríamos que hacer un método para
01:01:25
la de compilar y la de programación
01:01:26
vale, pues sí, ahora voy a buscar solo las de
01:01:28
meeting, buscar
01:01:31
¿veis? me la he añadido abajo
01:01:32
ahora voy a
01:01:35
buscar las de desarrollo
01:01:37
buscar, me las he ido
01:01:39
añadiendo, ¿qué nos falta? cada vez que hacemos
01:01:41
una búsqueda, hacer un remove los
01:01:43
ítems que tenía de la búsqueda anterior, añadir los nuevos
01:01:45
Pero vamos, salvo porque el combo box es pequeñito
01:01:47
Y no se ve bien
01:01:51
¿Qué nos falta?
01:01:52
El evento de este
01:01:54
Cuando le doy a all
01:01:56
Me vuelven a aparecer todas
01:01:58
Pero aquí abajo
01:02:01
Me van añadiendo
01:02:01
¿Qué nos ha faltado aquí?
01:02:04
Pues en nuestro botón
01:02:07
Cuando añadimos
01:02:08
Hacer un remove all items antes
01:02:10
Es decir, aquí
01:02:12
en el evento
01:02:15
del botón search
01:02:20
que es este
01:02:22
o no es este
01:02:23
si es este, pues vamos a hacer
01:02:25
un remove all items antes de nada para
01:02:28
limpiarlo
01:02:30
combo box
01:02:30
barra baja 1
01:02:34
se llamaba este
01:02:36
remove
01:02:37
all items, primero lo deja
01:02:39
limpito y luego ya se pone a
01:02:42
buscar por las tareas y añade la que sea
01:02:44
ahora ya en principio
01:02:46
sí, vamos a añadir
01:02:48
una solo, bueno
01:02:51
esta no, que hay que poner la fecha que es un rollo
01:02:52
esta
01:02:54
la añadimos
01:02:56
y ahora esta
01:02:58
sí, quitar que limpie esto
01:03:00
lo hace más cómodo, porque si no
01:03:02
tenemos que estar nosotros limpiados todo el rato
01:03:04
vale, tiene dos tareas ahora
01:03:07
vamos a ver
01:03:09
¿están las tareas? sí, están aquí las dos
01:03:10
vamos a buscar ahora solo la de
01:03:12
meeting
01:03:14
efectivamente no aparece
01:03:15
la de desarrollo está aquí
01:03:18
y la de entrenamiento
01:03:20
está aquí
01:03:22
y ahora ya, evento del combo box
01:03:23
pues es coger lo que hay en el combo box
01:03:26
coger el
01:03:29
el id, sacarlo del mapa
01:03:31
con el get y poner la nota en el textarea
01:03:33
es mucho más sencillo
01:03:35
bueno pues el evento del combo box
01:03:37
vámonos
01:03:40
este otra vez
01:03:42
aquí bajito y aquí
01:03:44
el evento del combo box
01:03:49
en el evento este del combo box
01:03:50
pues
01:03:58
tenemos que coger
01:04:00
el elemento que esté seleccionado
01:04:02
en el combo box
01:04:03
aquí para que me quite el amarillo
01:04:04
voy a ponerle este
01:04:10
combo box 1.get
01:04:11
selected item
01:04:17
vale
01:04:19
y de esto queremos
01:04:20
lo que hay
01:04:22
antes de los dos puntos
01:04:25
porque ese es el id
01:04:26
y el id es el que nos hace falta para sacar del map
01:04:28
entonces aquí
01:04:31
podemos hacer un split
01:04:32
get selected item, primero hacemos un casting a string
01:04:35
vamos a
01:04:39
vale, ahora una vez que lo tengo
01:04:43
en casting a string
01:04:45
hacemos un split
01:04:46
por dos puntos
01:04:49
y ahora una vez que
01:04:51
tengo el split por dos puntos, esto me da un array
01:04:56
y nos vamos a quedar
01:04:58
con la posición cero
01:05:00
pues que es todo esto
01:05:01
el id, pero el id en string
01:05:03
pues vamos a convertirlo
01:05:05
a entero
01:05:07
pues todo esto a integer parse int
01:05:09
nos hemos venido arriba y todo en una línea
01:05:11
ala, integer
01:05:13
punto parse int
01:05:17
y ya no sé si con los
01:05:19
paréntesis
01:05:29
y ya tengo el id, aquí está mi id
01:05:30
int id
01:05:33
ahí lo tengo
01:05:35
he cogido
01:05:37
lo que hay seleccionado en el combo box
01:05:38
he obtenido el array
01:05:41
de todo lo que hay
01:05:44
de todos los strings que hay
01:05:46
separados
01:05:47
haciendo el splitting por dos puntos
01:05:49
no, anterior no, o sea esto te hace
01:05:51
el split te separa, te devuelve un array de string
01:05:54
y en cada posición
01:05:56
de ese array te pone
01:05:58
lo que hay
01:05:59
es decir, vamos a
01:06:00
vamos a, joder, bueno
01:06:03
si, o sea, si el string
01:06:11
claro, o sea, tú tienes
01:06:16
claro, es decir, cada porción
01:06:18
claro, cada porción que está separada
01:06:20
por dos puntos, te la mete en una
01:06:23
posición del string, del array de string
01:06:25
entonces, como yo quiero
01:06:27
la primera porción de ese
01:06:28
array, me quedaré con la 0
01:06:30
¿vale? que es lo que he hecho aquí
01:06:32
entonces, el resultado
01:06:33
del split es un array
01:06:36
me quedo con la posición 0
01:06:38
la posición 0 es el primer token
01:06:40
de alguna manera, lo que hay
01:06:42
el primero de todos antes del punto y coma
01:06:44
si me hubiera quedado con la posición 1
01:06:46
se me quedaría con el siguiente
01:06:48
campo, el que hay después de los dos puntos
01:06:51
si me quedara con la posición 2
01:06:52
se quedaría con el que hay después de los siguientes
01:06:54
dos puntos, si es que los hay
01:06:57
vale, y ahora ya, me he quedado con el ID
01:06:58
bueno, ah no, está
01:07:01
separado en dos puntos en mi stream
01:07:07
está separado en dos puntos
01:07:08
entonces él va buscando en ese string
01:07:10
los dos puntos, los va buscando
01:07:13
cuando encuentra un dos puntos
01:07:15
se queda con la porción que había hasta ahí
01:07:17
y la primera porción del array
01:07:19
luego sigue hasta que se vuelve a encontrar otro dos puntos
01:07:20
cuando ya se ha encontrado otro dos puntos
01:07:23
coge lo que hay en ese trozo
01:07:25
y a la siguiente posición del array
01:07:27
entonces en mi posición cero
01:07:28
habrá quedado el string con el id
01:07:31
porque es lo primero que había
01:07:33
entonces como mi id es tan entero
01:07:34
yo lo paso entero con integer parsing y ya tengo el id
01:07:36
Y ahora me saco la tarea de ahí
01:07:39
Me saco la tarea
01:07:41
La tarea me la saco
01:07:42
Pues del map
01:07:45
Datos.tareas
01:07:48
Y ahora me la saco con el get
01:07:53
Y con ese id
01:07:56
Esta es la tarea que tiene ese id
01:07:57
Dentro de mi conjunto de tareas
01:08:00
Y ahora en mi área de texto
01:08:02
En mi área de texto
01:08:04
Que a saber cómo se llamaba
01:08:05
Ese área de texto
01:08:07
Text área 1
01:08:08
se llamaría
01:08:08
en mi área de texto textarea1
01:08:09
ahora ya fijo
01:08:13
la nota de esa tarea
01:08:14
y la nota de esa tarea será get nota
01:08:18
y ya lo tengo
01:08:20
cojo la tarea con s y d
01:08:24
y la fijo
01:08:27
en este área de texto
01:08:29
y ya está la funcionalidad del combo box hecha
01:08:30
vamos a probar
01:08:33
añadimos
01:08:36
vamos a poner el panel
01:08:40
bien otra vez
01:08:42
panel app
01:08:43
ahí arriba
01:08:48
vale, entonces
01:08:49
vamos a añadir
01:08:54
una de desarrollo
01:08:55
con esta
01:08:57
función y la nota
01:09:00
desarrollo
01:09:02
para ver si la está poniendo bien
01:09:04
la añadimos
01:09:06
uuuh, esto está a punto de apagarse
01:09:07
a ver, vale
01:09:09
¿la hemos añadido ya? bueno, si no va a añadir
01:09:37
otra con otro ID
01:09:40
y ya está, ahora
01:09:41
una de training, con un título
01:09:43
el que sea
01:09:45
training, ala
01:09:46
añadida, vamos a ver si
01:09:49
están, efectivamente
01:09:51
están aquí
01:09:53
las tres que he añadido, uno, dos y tres
01:09:54
vale, ahora, selecciono
01:09:56
la segunda
01:09:59
que tenía desarrollo, voy a seleccionar la tercera
01:10:00
training, efectivamente me va
01:10:03
cambiando la nota de
01:10:04
me las va cambiando
01:10:06
vale
01:10:08
vale, pues ya está
01:10:10
ya está todo
01:10:15
entonces esta
01:10:18
era sobre todo de componentes
01:10:21
que había que poner más
01:10:23
pero luego lo que había que hacer
01:10:25
dentro de los eventos
01:10:27
es que era más sencillo, era coger datos
01:10:29
meterlos a los maps
01:10:31
o recuperarlos de los maps
01:10:33
para plantarlos ahí
01:10:35
el código en sí
01:10:36
el código este
01:10:39
el único código que hemos hecho es
01:10:42
los eventos de los radio button
01:10:45
que es cambiar una etiqueta
01:10:52
nada más, bueno había que pensar
01:10:53
cosas de programación, claro que el identificador único
01:10:55
fue una variable aparte
01:10:57
lo de los radio button, pues poner una
01:10:59
variable para seleccionar, bueno había que pensar
01:11:01
pequeñas cosas
01:11:03
luego, ¿qué hemos programado? pues en el botón
01:11:04
añadir simplemente
01:11:07
esto de date ni siquiera hacía falta
01:11:09
si no lo usabas como date
01:11:11
hemos metido una tarea, eso es lo único que
01:11:13
hemos programado, instanciar una tarea
01:11:15
con los datos y meterla
01:11:17
ya está, no hemos hecho más código ahí en el de añadir
01:11:18
en el de
01:11:21
buscar
01:11:23
recorrer un map
01:11:24
recorrer un map y construir
01:11:26
este texto para llevarlo al
01:11:29
combo box
01:11:31
y en el action listener
01:11:32
recuperar del map
01:11:35
vale
01:11:38
bueno pues ya está
01:11:40
de aquí lo elegió
01:11:43
alguien más aparte de ti
01:11:44
y tú más o menos
01:11:45
lo completaste
01:11:49
eso no te dio tiempo
01:11:50
vale
01:11:54
ok, vale
01:11:55
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 7
- Fecha:
- 25 de mayo de 2024 - 17:46
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 12′ 02″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 365.85 MBytes