Saltar navegación

Clase 17-05-24 - 2 - Contenido educativo

Ajuste de pantalla

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

Subido el 25 de mayo de 2024 por Raquel G.

7 visualizaciones

Descargar la transcripción

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
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
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
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
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
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
¿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 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
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
EntrySet de 00:50:47
Integer 00:50:49
Tarea 00:50:51
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
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid