20260427 JavaFX_GestionTareas_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:
Venga, pues nos vamos a lo que ya nos gusta y nos interesa de verdad, que es, ah, que no veis nada, que es el código, ahora sí, que es el código, vale, pues a ver, esta es la parte bonita, esto es lo que nos interesa, a ver aquí cosa java, vale, pues entonces, primera cosa, ¿eh?
00:00:00
Primera cosa
00:00:26
Aquí esto nos sale subrayado en amarillo
00:00:29
Grave no es
00:00:32
Pero ya nosotros
00:00:34
Como programadores avezados
00:00:36
Nos escama un poco
00:00:37
Porque me aparece subrayado en amarillo
00:00:39
Entonces uno mira el avisito
00:00:41
Porque te dice
00:00:44
Oye, tabelbio es una clase genérica
00:00:49
No me la has parametrizado
00:00:52
Que mal rollo me da esto
00:00:53
Eso es como muy inseguro
00:00:55
Claro, decimos
00:00:56
anda, claro, es que TableView
00:00:58
es una estructura
00:01:00
que está pensada para contener
00:01:01
cosas, objetos
00:01:04
si yo no la parametrizo
00:01:06
en cada
00:01:08
línea de la TableView puedo
00:01:10
meter lo que me dé la gana
00:01:12
un objeto con 7 propiedades, en el otro caso
00:01:13
uno con 8 propiedades
00:01:16
eso luego a la hora de la vista
00:01:17
tratar de convertirlo, algo va a salir mal
00:01:20
ahí seguro, entonces claro
00:01:22
es que mi TableView
00:01:23
esta es para meter objetos
00:01:26
tarea, pues vamos a parametrizarla
00:01:28
con lo que yo
00:01:31
voy a meter
00:01:32
con tarea
00:01:33
¿vale? ahora ya
00:01:35
todos los métodos de table view
00:01:40
del tipo pues set
00:01:43
items, add item, los que tenga
00:01:45
para añadir elementos y quitar elementos
00:01:46
ya solo van a permitir
00:01:48
que esos elementos sean tarea
00:01:50
entonces bueno, eso es lo que queremos
00:01:52
un poco de coherencia en el código
00:01:54
eso para empezar
00:01:56
vale, entonces
00:01:58
¿qué más cosas?
00:02:01
bueno, pues luego nosotros aquí
00:02:03
cuando hemos hecho nuestra vista
00:02:05
a los campos
00:02:06
les hemos dado un nombrecito
00:02:09
y les hemos dado un nombrecito
00:02:11
porque hemos dicho, cada campo va a tener
00:02:14
un dato distinto, aunque sean datos
00:02:15
que luego sean
00:02:17
campos de la tarea, pero son datos
00:02:19
distintos, les hemos dado un nombrecito
00:02:21
entonces, ese
00:02:23
nombrecito, lo que es esa variable
00:02:25
que sería la casilla
00:02:27
dentro del table view
00:02:29
esa variable
00:02:30
de qué tipo es
00:02:32
como la ubico
00:02:35
la variable tabla completa
00:02:36
esta
00:02:38
está claro, es el table view
00:02:40
pero la variable
00:02:43
solamente un campito
00:02:45
de qué tipo es
00:02:47
entonces ahí uno busca, indaga
00:02:49
y le sale lo que podía suponer
00:02:51
que es table column
00:02:53
Ah, pues yo estoy usando
00:02:54
Dos table column
00:02:57
Aquí
00:03:00
Que necesito ligarlas desde Java
00:03:00
Porque voy a poner en ellas datos
00:03:03
Pues dos table column necesito
00:03:05
Pues vamos a ponerlas aquí
00:03:07
¿Vale?
00:03:10
Este salto, lógicamente
00:03:17
Hasta aquí podríamos haber trabajado
00:03:18
Sin chat GPT y sin documentación
00:03:20
Esto último
00:03:22
Ya tendríamos que haber buscado
00:03:25
Lo del table column
00:03:26
Pues no se nos va a ocurrir así
00:03:27
Solo en la marcha
00:03:29
Vale, entonces mi primera columna
00:03:37
Table column se llamaba col nombre
00:03:39
Y la otra se llamaba col fecha, ¿verdad?
00:03:40
Pues venga
00:03:43
Col nombre
00:03:44
Voy, voy, voy
00:03:48
Col fecha
00:03:59
Tranquila
00:04:00
Vale, entonces de nuevo
00:04:02
De nuevo me sale en amarillo
00:04:05
Otra vez me mosquea
00:04:07
Lo miro y me dice
00:04:09
es una clase genérica con dos parámetros
00:04:10
¿qué necesitas ahí?
00:04:14
vale, pues uno de ellos
00:04:18
será sí o sí
00:04:20
el tipo de dato de la columna
00:04:21
seguro, el primero es un string
00:04:23
y el segundo es un local date
00:04:25
porque ahí queremos poner una fecha
00:04:27
un string y un local date
00:04:29
pero el primero o el otro
00:04:31
¿qué será? pues aquí de nuevo
00:04:34
uno puede tener una intuición
00:04:35
maravillosa sobre la marcha o lo acaba buscando
00:04:38
y claro, los dos
00:04:40
parámetros son
00:04:42
uno, la clase
00:04:45
a la que pertenecen
00:04:47
los objetos de la tabla en la que estás insertado
00:04:49
que es tarea
00:04:51
y el otro es tu campo específico a qué tipo es
00:04:51
pues entonces
00:04:55
esto lo deberíamos parametrizar a
00:04:57
tarea string
00:04:59
y esta lo deberíamos parametrizar
00:05:04
a tarea
00:05:08
local date
00:05:10
vale, vamos a hacer
00:05:13
con el initialize esto una pequeña
00:05:20
cosa de prueba
00:05:22
y es
00:05:23
vamos a añadir
00:05:26
en el momento de inicializar
00:05:28
una tarea cualquiera que creamos
00:05:30
aquí de prueba, a ver aquí
00:05:32
que pasa
00:05:34
vale, pues entonces
00:05:35
esto funciona
00:05:38
como el combo box
00:05:40
los datos
00:05:42
de la table view
00:05:44
tendrán que estar en alguna colección
00:05:46
y yo luego esa colección
00:05:48
se la fijo a la tarea
00:05:49
bueno, esa colección si es observable list
00:05:51
pues mucho mejor
00:05:54
pues venga, nos vamos a hacer una observable list
00:05:55
de tarea
00:05:58
perdón, no, esto no se instanciaba
00:06:03
si, esto se instanciaba como
00:06:15
fx collections
00:06:17
punto
00:06:19
get o create observable list
00:06:21
o observable
00:06:25
o con qué método
00:06:27
se creaba esto
00:06:29
createObservableList
00:06:31
o como era esto
00:06:34
observableArrayList
00:06:35
observableArrayList
00:06:45
vale, aquí era, este
00:06:47
por ejemplo, vale
00:06:48
entonces
00:06:50
la vamos a sacar fuera de hecho
00:06:55
la vamos a sacar fuera
00:06:58
¿vale? esta va a ser
00:07:01
la lista
00:07:04
esta va a ser la lista
00:07:05
que tenga los elementos de mi
00:07:08
tabla, la saco fuera
00:07:10
para que otros métodos puedan acceder a ella
00:07:12
lógicamente, la saco fuera
00:07:14
¿vale? y ahora
00:07:16
en el inicializar este voy a hacer como
00:07:18
prueba, añadirle
00:07:20
una tarea, una cualquiera
00:07:22
la podría haberle dado un fichero pero bueno la creo
00:07:24
como prueba
00:07:26
y se la pongo a la table view
00:07:27
a ver si me funciona
00:07:30
que es la primera prueba que uno tendría a hacer
00:07:31
es una colección sin más
00:07:33
es una array list, pero la ventaja que tiene
00:07:40
es que está unida
00:07:42
al elemento
00:07:44
al que tú la fijes luego
00:07:47
posteriormente, que no te la vamos a fijar
00:07:48
a las tareas
00:07:50
una vez que ya está fijada la tabla
00:07:52
con el set items ya está fijada
00:07:54
si alguien, como resultado
00:07:56
de algún evento, lo que sea, añade
00:07:58
o quita algún elemento del observable list
00:08:00
pues eso
00:08:03
se refleja en la vista
00:08:04
¿vale? o sea es una colección
00:08:06
que va unida
00:08:09
a un control
00:08:10
va unida
00:08:11
claro, tendrá los métodos
00:08:13
de cualquier array list
00:08:19
supongo
00:08:20
seguramente, si no lo sé
00:08:23
vale, vamos a hacer una
00:08:24
Primera prueba
00:08:28
Vale, vamos a hacer una primera prueba
00:08:29
Que vamos a crearnos una tarea
00:08:34
Y como claro, os empeñasteis en ponerle
00:08:36
Tanto
00:08:47
Tantos
00:08:48
Bichos de estos
00:08:50
Set id
00:08:52
Set
00:08:56
Nombre
00:09:02
Comer
00:09:04
Set
00:09:08
Descripción
00:09:11
Macarrones
00:09:15
Set
00:09:18
fecha
00:09:23
esto lo podíamos crear
00:09:24
con local date, tenía un
00:09:27
parse
00:09:29
que tenía un formater por defecto
00:09:30
que creo recordar que hicimos el otro día que era
00:09:34
los 4 del año, mes y día
00:09:36
pues entonces, esta se va a tener que hacer
00:09:38
en el 2000
00:09:41
antes del 2020
00:09:43
tienes que comer macarrones, antes de
00:09:44
el 1 de marzo
00:09:46
el 2027 hay que comer macarrones
00:09:49
como sea
00:09:51
Prueba.setCompletadaFalse
00:09:52
Vamos a añadírsela a la observable
00:10:02
Y ahora a nuestra tableView
00:10:18
Que se llamaba tabla
00:10:27
Le fijamos
00:10:29
Buscamos el método
00:10:35
Que más pegue a fijarle una lista de elementos
00:10:39
Siempre tenderíamos a buscar por el set
00:10:43
Antes de nada
00:10:47
Y si yo busco por el set antes de nada
00:10:48
Pues encontraría un set items donde le pongo una lista observable
00:10:50
Pues justo lo que estaba buscando
00:10:53
¿Por qué no le hago el qué?
00:10:55
A ver, podría
00:11:14
A ver, pero eso es una línea de código
00:11:15
Una línea de código no la puedo hacer fuera de mi método
00:11:17
A ver, esto es una sentencia de código
00:11:19
Una sentencia de código tú no lo puedes hacer
00:11:26
Fuera de ningún método
00:11:29
Vale, pues entonces
00:11:30
Vamos a ver si esto hace algo
00:11:35
Entonces
00:11:37
Vale, vamos a ver
00:11:40
Esto es
00:11:55
Mis tareas
00:11:58
Mis tareas
00:12:00
Pues no, ¿vale?
00:12:03
Sí, pero yo
00:12:11
Sabía que lo iba a mostrar
00:12:12
Pero
00:12:13
No
00:12:14
No por esto
00:12:18
Esto es otra cosa
00:12:23
Bueno, en cualquier caso la idea era que no funcionara
00:12:24
Aunque
00:12:28
No, creo que no por eso
00:12:29
Eso que ha salido ahí me ha dado mal rollo, pero bueno
00:12:31
Ahora lo miramos
00:12:33
Vale, entonces, ¿qué
00:12:35
¿Qué pasa aquí? A ver, es que aquí hay algo
00:12:36
Que está sin resolver
00:12:39
Yo le he dicho a la tabla
00:12:40
Que se quede con estas tareas
00:12:43
pero luego la vista
00:12:45
no muestra todos los campos
00:12:48
la vista va a mostrar solo dos cosas
00:12:49
y no sabe que cosas son
00:12:51
o sea mi tabla tiene dos columnas
00:12:53
col nombre y col fecha
00:12:56
pero no sabe que tiene que colocar en col nombre
00:12:57
y no sabe que tiene que colocar en col fecha
00:13:00
es imposible que esto funcionara
00:13:01
¿vale? porque eso nos falta
00:13:03
¿qué muestro en esta columna y qué muestro
00:13:05
en esta otra? tendremos
00:13:08
que ligar esta columna
00:13:09
a algún campo
00:13:12
de la clase tarea
00:13:13
y tendremos que ligar esta otra columna
00:13:15
a algún campo de la clase tarea
00:13:18
¿cómo? me puedo empezar
00:13:19
aquí ya, una vez que yo ya
00:13:22
he identificado que es que
00:13:24
me falta un vacío, un agujero negro
00:13:25
pues esas preguntas concretas
00:13:27
que yo tengo perfectamente
00:13:30
aisladas, pues se las pregunto
00:13:31
a una IA sin problema porque están aisladas
00:13:34
y sé lo que necesito y sé lo que estoy buscando
00:13:36
pero si me pongo ahora yo a buscar
00:13:38
métodos, a ver cómo fijo
00:13:39
el contenido de una columna
00:13:41
o una esta, pues puede que lo encuentre
00:13:43
explorando métodos, pero eso ya se me hace
00:13:45
un poco pesado
00:13:47
pero una cosa atómica como esta
00:13:48
claro que la pregunto
00:13:51
entonces
00:13:53
¿cómo le podríamos preguntar
00:13:55
a vosotros os gusta Gemini, verdad?
00:13:57
vale, pues es que yo
00:14:07
soy de otra generación en las que nos
00:14:09
hablamos, entonces yo le digo
00:14:11
¿cómo
00:14:13
además le pongo hasta las tildes
00:14:15
para que no tenga que gastar agua de los lagos de Canadá
00:14:17
perdón
00:14:19
ya, tienes toda razón
00:14:21
sí, pero vale, bueno, venga
00:14:25
¿cómo
00:14:27
le digo
00:14:28
a una
00:14:31
table column
00:14:33
de
00:14:38
java fx? porque aquí
00:14:39
sé exactamente lo que quiero
00:14:42
y si lo que me responde es una tontería que podría
00:14:43
ocurrir, como yo sé
00:14:46
exactamente lo que necesito
00:14:48
pues no haría un copia y pega, sino diría
00:14:49
no, no, no, no es exactamente eso lo que te pido
00:14:51
te estoy pidiendo esta otra cosa
00:14:54
¿vale?
00:14:55
dejaba fx a que campo
00:14:56
enlaza
00:15:00
de su entidad
00:15:02
no está muy bien expresado pero es muy lista
00:15:04
¿no? pues ya está
00:15:06
sell value factory
00:15:07
vale, dame un ejemplo, si no
00:15:14
vale
00:15:16
pues a esta columna le pones
00:15:18
en su celda
00:15:22
este campo
00:15:23
pues ya lo tenemos
00:15:25
Se llama nombre
00:15:27
Sí
00:15:34
Sí, jolines, pues igual es que nos ha estado oyendo
00:15:38
Mientras estábamos haciéndolo
00:15:41
Vale, pues es esto, ¿no?
00:15:43
Es esta línea la que necesitamos
00:15:47
Venga, pues ¿dónde hacemos esto?
00:15:48
Esto es una sentencia de código
00:15:52
No la hacemos aquí, la tendremos que hacer
00:15:54
El que inicialice este
00:15:56
El que inicializa lo que le falte a los controles
00:15:57
Pues aquí, mi columna nombre
00:16:01
Tú ponte como
00:16:04
En mi tarea, como el campo quiero
00:16:06
Nombre, mira, está clavada
00:16:09
Pero luego nos falta el local date también
00:16:10
El property value factory
00:16:12
Y ahora
00:16:14
Mi columna fecha
00:16:16
New
00:16:18
Tarea
00:16:23
Local date, que es fecha
00:16:24
Vale
00:16:27
Fecha
00:16:29
Creo que nos ha contestado bien
00:16:29
No tenemos más que probarlo
00:16:34
vale, a mi columna fecha
00:16:36
oye tú, te tienes que rellenar
00:16:39
con la propiedad fecha de tarea
00:16:41
de aquí la importancia
00:16:43
del primer parámetro de la columna
00:16:45
para decirte
00:16:47
a qué entidad estás enganchada
00:16:49
ahora es cuando entendemos por qué es tan importante
00:16:50
este primer parámetro
00:16:53
para entender este campo de qué entidad viene
00:16:54
vale, pues entonces
00:16:57
vamos a probar
00:17:05
mis tareas
00:17:08
tareas
00:17:10
es que el error de antes me había mosqueado mucho
00:17:11
no debería haber salido
00:17:14
no, no, no, a mí no
00:17:15
porque es que el error de antes no tenía que ver
00:17:18
con esto y no sé por qué me empezó a salir esto
00:17:21
yo algo he hecho raro cambiando algo
00:17:22
le habré pasado
00:17:24
algo en mi código está mal
00:17:27
o sea, me refiero que he mezclado dos clases
00:17:30
he hecho algo raro
00:17:32
fold maven, algo de maven
00:17:33
yo no sé qué he hecho aquí raro
00:17:40
¿Pero a ti te funciona?
00:17:42
A mí sí, pero antes cuando lo...
00:17:44
O sea, que no tengo ningún error
00:17:45
Sí, o sea, antes no te ha salido este error
00:17:46
Claro, es que no me tendría que haber salido
00:17:49
Tendría que ser la tabla en blanco, que era lo que yo esperaba
00:17:51
Pero esto es algo de que
00:17:53
Mi código está mal
00:17:55
¿En el local date?
00:17:56
A ver
00:18:04
Ah, en el parse
00:18:04
Vale, vale, vale
00:18:10
Ah, muy bien visto
00:18:12
Claro, efectivamente
00:18:19
Vale, que estaba mal el formato de la fecha
00:18:20
Vale, vale
00:18:23
Vale, perfecto
00:18:23
Vale
00:18:29
Vale, ahora ya sí
00:18:29
Vale
00:18:38
Esto es lo que no me gusta
00:18:40
Que
00:18:42
El tamaño es fijo
00:18:44
Y si no lo completas
00:18:46
Esto te aparece en blanco
00:18:49
Que no me gusta nada
00:18:50
Y esto
00:18:52
Me parece que no hay un
00:18:53
Algo
00:18:56
Por vía fxml
00:18:58
Fijar el ajuste que se ajusta al menos ahí
00:19:00
Tienes que hacerlo por código
00:19:02
En función del ancho de columna o no sé qué
00:19:04
Pero bueno, eso si queréis lo podéis
00:19:06
¿Cómo?
00:19:09
Pues lo habrás puesto mal, claro
00:19:17
Exacto
00:19:19
Has puesto aquí
00:19:22
Col nombre, nombre
00:19:23
Col fecha, fecha
00:19:26
¿Qué?
00:19:27
Puse integer, sí
00:19:36
Por si tengo que parametrizar por integer
00:19:44
Por ejemplo, si yo quisiera mostrar el id
00:19:47
Aquí tengo que poner integer obligatoriamente
00:19:50
Porque int no puedo poner
00:19:54
Que tampoco pasaría nada porque haría luego
00:19:56
Aunque el otro estuviera como int, haría la conversión automática
00:20:00
Pero bueno, queda más bonito el integer
00:20:02
No, no tienes por qué
00:20:04
Porque ya lo hereda de col nombre
00:20:14
Es decir, desde el momento en que tiene esto
00:20:16
Estas dos
00:20:20
Se refiere a coge
00:20:21
Los parámetros de col nombre
00:20:23
¿Vale?
00:20:26
Al tener estas flechitas ya los coge de ahí
00:20:28
¿Vale?
00:20:30
No, a ver, si yo le hubiera puesto
00:20:37
Otro campo
00:20:39
Que fuera integer
00:20:40
Aquí pondría entonces el integer
00:20:42
Y aquí
00:20:45
Y aunque luego ese campo estuviera como int
00:20:46
No te daría error
00:20:48
Porque el int Java lo convierte
00:20:49
Automáticamente al int de él
00:20:52
¿Vale? No te daría
00:20:53
Estoy casi segura de que no te daría
00:20:55
Bueno, pues esto está muy bien y muy bonito
00:20:57
Pero nos faltan cuatro eventos
00:20:59
El de pinchar aquí
00:21:01
El de los botones
00:21:02
Y el de los botones
00:21:04
Entonces vamos a empezar por el
00:21:06
Este
00:21:10
Porque el de los botones pues sería
00:21:10
Añadir tarea
00:21:13
pedir los datos, crear la tarea
00:21:15
y añadirla a la lista observable
00:21:17
en principio
00:21:20
y con esto igual y con esto lo mismo
00:21:20
bueno, habría que explorar, a ver
00:21:24
aquí modific
00:21:25
buscar en el observable la tarea
00:21:28
cambiarle el boolean y ya se reflejaría
00:21:29
vale, pero vamos con esta
00:21:31
este era el evento de
00:21:33
un mouse click, vale
00:21:35
pues entonces
00:21:37
mostrar tarea
00:21:38
entonces aquí
00:21:41
tenemos que coger la tarea
00:21:44
seleccionada de la tabla
00:21:46
pues aquí es ponerse a explorar en los
00:21:48
métodos, que método
00:21:50
me devuelve la tarea que yo he seleccionado
00:21:52
que no me va a devolver los dos campos
00:21:55
solamente, me devuelve la tarea entera
00:21:56
porque está parametrizada, eso es lo interesante
00:21:58
que la tabla solo me muestra
00:22:00
lo que yo le he dicho, pero en realidad
00:22:02
tiene dentro la tarea entera
00:22:05
porque está parametrizada la tarea entera
00:22:06
pues entonces, si uno busca
00:22:08
aquí, o le pregunta
00:22:10
y en concreto, ¿cómo saco
00:22:12
de una table view el objeto
00:22:15
que está seleccionado en un momento dado?
00:22:16
Pues
00:22:20
primero
00:22:21
tiene que sacar el modelo
00:22:23
porque esto es igual que en swing
00:22:24
y luego tiene que sacar
00:22:26
el selected
00:22:29
item o item sin más
00:22:30
selected item
00:22:33
¡Hala! Pues esta es la tarea
00:22:34
seleccionada, esta es
00:22:37
Ahora, ¿cómo la
00:22:42
mostramos?
00:22:44
pues podríamos ponerlo en una etiqueta,
00:22:46
pero es un poco feo.
00:22:48
Vamos a hacer una ventanita emergente.
00:22:48
Lo que en Swim se llamaba JOptionPane,
00:22:51
aquí resulta que se llama Alert.
00:22:55
Entonces, uno puede crear un objeto Alert,
00:22:58
que es una ventanita que sale,
00:23:02
que se puede configurar si es ventanita de tipo Información.
00:23:04
Para esto en concreto,
00:23:07
pues uno le pide el código también a quien quiera.
00:23:09
Para esta cosa en concreto.
00:23:14
porque sabe exactamente lo que quiere
00:23:16
entonces si sabemos exactamente lo que queremos
00:23:18
si tenemos el control de nuestro código
00:23:19
usamos esto con toda la alegría del mundo
00:23:21
entonces dame la
00:23:24
sintaxis
00:23:26
de la
00:23:27
emergente
00:23:29
alert
00:23:32
de java fx
00:23:33
vale porque alert
00:23:36
yo os digo o suena
00:23:38
que es una emergente
00:23:40
con datos
00:23:42
pues en lugar de buscar su sintaxis
00:23:42
por ahí, por la documentación
00:23:45
la preguntamos y ya está
00:23:47
dame la sintaxis de la
00:23:48
emergente de JavaFX
00:23:51
pues venga, mira te lo dice aquí
00:23:52
creas
00:23:55
el tipo de objeto alert, si es de
00:23:57
información, si es de
00:23:59
configura su aspecto, su título
00:24:00
pone su contenido
00:24:03
y la muestras, pues venga
00:24:05
vamos a copiar directamente todo esto
00:24:07
la importamos, alert
00:24:08
Venga, vamos a crear el objeto alert
00:24:14
¿Qué título le vamos a poner?
00:24:17
Le vamos a poner datos tarea
00:24:20
Datos tarea
00:24:21
Header text
00:24:24
Cabecera, puedes poner null para quitarla
00:24:26
Pues null porque no quiero cabecera
00:24:29
Y ahora, el contenido de la emergente
00:24:30
Los datos de la tarea
00:24:35
Pues vamos a poner
00:24:36
Los datos de la tarea
00:24:39
Vamos a poner
00:24:40
La descripción
00:24:41
Y si está completada o no, por ejemplo, para que no salga mucho
00:24:43
Pues le vamos a poner descripción de la tarea
00:24:47
Que será t.getDescripción
00:24:50
Concatenado con un espacio
00:24:56
Y le vamos a poner si está completada o no
00:24:59
Y para eso esto depende de t.isCompletada
00:25:03
Si está completada ponemos
00:25:08
completada
00:25:12
y si no pendiente
00:25:13
completada
00:25:15
y si no ponemos pendiente
00:25:17
voy a bajar
00:25:20
esto aquí abajo
00:25:22
vale, pues ya le he puesto
00:25:23
el texto que quiero que salga en la emergente
00:25:40
que es la descripción de la tarea
00:25:42
y luego en función de si está completada o no
00:25:44
que ponga completada o pendiente
00:25:46
y ahora ya que me muestra la emergente
00:25:47
me la muestra
00:25:50
y tendrá algún botoncito para cerrarla suponemos
00:25:51
ala pues ya tengo el evento de mostrar tarea
00:25:54
repito
00:25:56
para eso he decidido
00:25:58
como quiero que me la muestre, con una emergente
00:26:00
muy bien
00:26:02
como es la emergente, ah alert
00:26:03
me suena que es alert porque he buscado, pues ahora pido
00:26:06
la sintaxis concreta de alert
00:26:08
vale, pero siempre
00:26:10
cuando nosotros sabemos exactamente
00:26:12
que queremos, no copiamos código
00:26:14
por copiar y le decimos
00:26:16
hazme una aplicación que haga esto, pues no le decimos
00:26:17
esto, hacemos la aplicación y para
00:26:20
una cosa en concreta, pues la pedimos
00:26:22
vamos a ver si hemos acertado
00:26:24
mis tareas
00:26:26
a ver
00:26:31
toma ya, ahí está, los macarrones que están
00:26:36
pendientes
00:26:39
ya está, vale
00:26:40
hay más ventanas alert
00:26:46
esta es la que muestra información
00:26:48
la isla típica
00:26:51
de aceptar, cancelar
00:26:53
y cuando tú das aceptar
00:26:54
o cancelar, lo que ocurre
00:26:57
es que este método
00:26:59
alert show and wait
00:27:00
tiene un valor de respuesta
00:27:04
que tú lo puedes coger, veis que tiene ahí
00:27:06
un button type
00:27:08
entonces, en este caso es que solamente
00:27:08
hay un botón posible que tú puedes hacer el pulsado
00:27:12
que es el de aceptar, pero hay otros
00:27:14
alert que no son de tipo
00:27:16
informatio, imaginaos que son de tipo
00:27:18
por ejemplo
00:27:20
confirmatio
00:27:20
por ejemplo
00:27:24
¿cómo es el alert tipo confirmatio?
00:27:25
pues
00:27:29
a ver un momentito
00:27:30
un momento y ya nos vamos
00:27:31
el alert confirmation
00:27:36
mis tareas
00:27:38
este es el alert
00:27:42
confirmation, que como veis
00:27:50
tiene dos botones
00:27:52
entonces, ¿cómo distingues tú desde
00:27:53
código cuál se ha pulsado?
00:27:56
pues lo tienes
00:27:59
que recoger aquí
00:28:00
este te lo devuelve
00:28:02
como valor de retorno
00:28:04
aquí lo hemos tirado a la basura
00:28:05
pero tú podrías con un if
00:28:07
si el botón que se ha pulsado
00:28:09
es aceptar, hago lo que sea
00:28:12
si el que se ha pulsado es cancelar
00:28:13
hago otra cosa
00:28:16
vale, en este caso
00:28:17
como nuestro alert era de information
00:28:19
solo había un botón, nos da igual
00:28:21
capturar por tanto, perdón
00:28:24
capturar no, quedarnos
00:28:26
con ese
00:28:28
vale, el information es solo
00:28:28
un, vale, pues ya está
00:28:35
No, este no es ningún evento
00:28:51
No, no, el evento que has hecho para
00:28:53
A este onMouseClick
00:28:55
Porque este no tiene por defecto
00:28:58
OnMouseClick
00:29:00
Vale
00:29:01
Y nos vamos
00:29:02
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 3
- Fecha:
- 27 de abril de 2026 - 13:17
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 29′ 07″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 127.15 MBytes