Clase 06-05-24 - 3 - 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:
esta opción mía no está tan mal
00:00:00
ah, pues
00:00:03
así no vemos nada
00:00:04
vale, primero
00:00:06
vamos a completar
00:00:08
espera, luego se lo comentas, de verdad, me caso
00:00:09
aguanto un rato callado, de verdad
00:00:14
un ratito solo
00:00:16
bueno, pues solo tienes que aguantar 10 minutos
00:00:17
más, de verdad, luego los últimos 5
00:00:20
ya todo esto ya se
00:00:22
vale, a ver, la opción
00:00:23
nuevo, la opción nuevo que era la
00:00:26
de si
00:00:28
el ítem
00:00:29
que le hemos pasado al evento, ese archivo
00:00:32
¿vale? pues en la opción
00:00:35
nuevo ya había pedido un nombre
00:00:37
y ¿qué he incorporado ahora?
00:00:39
he incorporado ahora esto
00:00:41
que decía aquí de, oye
00:00:43
en la opción nuevo, si el nombre
00:00:45
ya existe, que te diga
00:00:47
oye ya existe un fichero con ese nombre, mete otro
00:00:49
y así esté todo el rato, entonces ¿qué es lo único
00:00:51
que he cambiado en la opción? pues lo he cambiado
00:00:53
he metido un bucle do while
00:00:56
un bucle do while que está
00:00:57
todo el rato
00:00:59
poniendo el
00:01:00
el mensajito
00:01:02
introduzca nombre de archivo
00:01:04
todo el rato
00:01:05
todo el rato
00:01:06
mientras
00:01:07
el fichero exista
00:01:08
entonces
00:01:11
lee nombre
00:01:13
con el J
00:01:13
opción pane
00:01:14
y mientras exista
00:01:15
vuelve a pedir
00:01:16
para eso
00:01:17
me he limitado a hacer
00:01:18
un existe archivo
00:01:18
lo primero que hace
00:01:20
es esto
00:01:21
devuelve
00:01:21
contiene la clave
00:01:23
nombre
00:01:25
ya está
00:01:25
este es el fichero
00:01:25
existe archivo
00:01:26
ya está
00:01:27
no tiene nada más
00:01:27
vale
00:01:28
Pues entonces, aquí para que los option pane a partir del segundo te muestre el fichero ya existe y quede más bonito, es decir, para que el efecto sea este, a ver, voy a, como ahora mismo no hay archivos, el primero me va a dejar crearlo, ¿no?
00:01:29
un nombre de archivo, gastos
00:01:50
ala, aquí está
00:01:52
pues bueno, vamos a imaginar que yo ahora quiero
00:01:54
abrir otro
00:01:56
he trabajado
00:01:58
con otro, lo que sea, y ahora voy a
00:02:00
nuevo
00:02:02
me dice, pues nombre archivo
00:02:03
y le vuelvo a dar gastos, este ya existe
00:02:06
entonces me dice
00:02:08
el fichero ya existe, introduzca nombre de archivo
00:02:10
y así se está todo el rato
00:02:12
el fichero ya existe
00:02:14
hasta que le ponga uno que no existe, ¿no?
00:02:15
vale, ese es el efecto
00:02:18
que quiero lograr, que quiero ahora
00:02:20
abrir, venga
00:02:22
este, oye que el fichero ya existe
00:02:24
introduce otro
00:02:26
este no
00:02:27
oye que el fichero ya existe, introduzca
00:02:28
otro, entonces para lograr el efecto
00:02:32
de que el mensajito del
00:02:34
option pane cambie a partir de la
00:02:36
segunda vez que te lo pide
00:02:38
simplemente he hecho esto
00:02:39
me he creado aquí un mensaje para
00:02:41
concatenar antes de
00:02:47
introduzca nombre archivo para concatenar.
00:02:49
Entonces, si es la primera
00:02:52
vez que entro en el do while,
00:02:53
si es la primera vez, y sé que es
00:02:55
la primera vez que entro en el do while porque el nombre todavía
00:02:57
está nul. Entonces, si es la
00:02:59
primera vez que entro en el do while,
00:03:01
el mensajito a concatenar
00:03:03
antes de introduzca que sea vacío.
00:03:05
Y si
00:03:08
nombre no es nul, es que es la segunda
00:03:09
vez que entro en el do while. Entonces,
00:03:11
en ese caso, que el mensajito a concatenar
00:03:13
sea ese. ¿Vale? No os olvidéis
00:03:15
del operador ternario y de estas cosas
00:03:17
porque son las que hacen los códigos ágiles
00:03:19
vale, pues ahora ya
00:03:21
he hecho este bucle do while
00:03:22
que está simplemente
00:03:24
mostrando un jota opción para introduzca, introduzca, introduzca
00:03:25
mientras el fichero exista
00:03:29
y luego además con el truco
00:03:31
este de concatenar con un mensajito antes
00:03:33
a partir de la segunda
00:03:35
me está avisando, ya existe
00:03:36
y ya está, he incorporado este do while
00:03:38
y una vez que ya ha salido de aquí
00:03:41
guardo el fichero por ahora sin contenido
00:03:43
lo creará nuevo
00:03:45
fijo el archivo
00:03:47
de trabajo con el nombre con el que estoy trabajando
00:03:49
pongo
00:03:51
el textarea vacío
00:03:53
por si estuviera lleno de antes de haber trabajado
00:03:54
con otro, y ya está, y pongo la etiqueta
00:03:57
o sea, lo que he cambiado es el do while
00:03:59
en realidad, ¿vale? bueno, ahora llevámonos
00:04:01
a las otras opciones que estaban sin hacer
00:04:03
esta está clara, ¿no? la de abrir
00:04:04
la de abrir
00:04:07
pues aquí abrir es lo mismo
00:04:08
pero tenemos que estar pidiendo todo el rato
00:04:10
mientras la condición sea la contraria
00:04:13
es el mismo do while
00:04:15
pero lo que he cambiado es la condición, mientras no
00:04:16
exista, o sea es el mismo do while
00:04:18
de arriba, pero he cambiado la condición
00:04:20
mientras no exista, porque ahora
00:04:23
estamos abriendo, mientras no exista
00:04:24
patatín, y el mensajito que
00:04:26
pongo precisamente es el contrario, el fichero no
00:04:28
existe, introduce otro, el fichero no existe, introduce
00:04:30
otro, entonces
00:04:32
abrir es un bucle que está todo el rato
00:04:34
mientras el fichero no exista
00:04:36
y una vez que ha salido del bucle es porque
00:04:37
el fichero existía
00:04:40
lo recupera con el método
00:04:42
lo recupera
00:04:44
con el método y lo fija en el área de texto
00:04:46
y ya está, entonces para eso me he hecho
00:04:48
el método recuperar archivo
00:04:50
que tiene una línea
00:04:52
coge el valor de ese nombre y ya está, tiene una línea
00:04:53
ese archivo, recuperar archivo tiene esta línea
00:04:56
y se acabó
00:04:58
y ahora lo fija
00:04:59
en el área de texto y ya tenemos
00:05:02
nuevo archivo de trabajo que es este
00:05:04
si había uno de antes
00:05:05
lo que no he hecho es que si tú abres uno y ya había uno
00:05:08
no te dice ¿quieres guardar el que había?
00:05:10
no, asume que tú lo has dado a guardar antes
00:05:12
lleno nada, para no ir complicando
00:05:14
el código, ¿vale?
00:05:16
entonces la opción de abrir ya está completa
00:05:18
te está todo el rato pidiendo
00:05:20
mientras no exista y cuando
00:05:22
existe te lo fija, la de guardar
00:05:24
la de guardar es la más fácil
00:05:26
¿qué hace? le da al método
00:05:28
de guardar archivo
00:05:30
con el nombre del archivo de trabajo
00:05:31
con el que estemos trabajando, que está siempre ahí
00:05:34
y con el contenido del área de texto
00:05:36
ya está, guardar archivo es sólo eso
00:05:38
guarda archivo
00:05:40
dando el nombre del archivo de trabajo
00:05:42
que es con el que estás trabajando
00:05:44
y el contenido del área de texto y se acabó
00:05:46
y luego he puesto un mensajito que te avise que lo ha guardado
00:05:48
para que no sea tan
00:05:51
incómoda la interfaz
00:05:52
guardar como
00:05:53
es como guardar pero va a pedir previamente
00:05:55
un nombre, de nuevo un bucle
00:05:58
que se está pidiendo nombre
00:06:00
mientras exista, porque el guardar
00:06:02
como yo lo he puesto ahí para que sea
00:06:05
como un nombre de archivo que no exista
00:06:06
porque si no ya pisas el anterior
00:06:08
pero bueno, si no queréis poner esta restricción
00:06:09
pues no pongáis bucle y ya está
00:06:12
entonces otra vez el mismo bucle
00:06:13
que está todo el rato mientras el fichero
00:06:15
exista, te dice introducir otro nombre
00:06:18
para no pisar el que existe
00:06:20
una vez que lo tienes, guardas el archivo
00:06:21
te muestra archivo guardado y se acabó
00:06:23
y ahora ya el nuevo archivo de trabajo
00:06:25
se cambia con el nuevo nombre que has guardado
00:06:28
y la de cerrar
00:06:30
esta no tiene nada
00:06:32
cerrar es todo a null, todo vacío
00:06:33
y todo vacío
00:06:35
Y ya está
00:06:36
Estas serían todas las opciones de archivo
00:06:38
Las de utilidades no
00:06:40
Entonces si las probamos
00:06:41
Lo que vosotros tendréis que conseguir
00:06:47
Contra su programa
00:06:50
Ahora mismo no tengo ninguno
00:06:51
Entonces ahora mismo que yo le dé a abrir
00:06:53
Me voy a meter en un bucle infinito
00:06:55
Porque es que si yo le doy a abrir
00:06:57
Aquí voy a estar todo el rato
00:06:58
Es que no tengo ninguno
00:07:00
Entonces va a estar todo el rato
00:07:01
No existe, no existe, no existe
00:07:03
Entonces nada, cancelar
00:07:04
Fuera
00:07:06
Bueno, es que como me he metido en un bucle, estoy en un bucle infinito con este jOptionPanel, ¿vale?
00:07:08
Entonces, vamos a, tendría que, si la opción, si le hemos dado a cancelar, que se puede recoger también,
00:07:15
pues, pero bueno, eso ya lo completé vosotros si queréis.
00:07:23
Vale, pues, me metí en este bucle infinito, así que tengo que parar el proceso.
00:07:28
a ver
00:07:35
vale, pues hacemos uno nuevo
00:07:36
ahora, uno nuevo, venga
00:07:42
nombre de archivo
00:07:44
aquí no va a haber problema porque es el primero
00:07:45
pues gastos, venga
00:07:48
este
00:07:50
y trabajamos con el que le queremos guardar
00:07:52
pues vale, lo guardamos
00:07:54
ya está, el archivo ya está guardado
00:07:55
vamos a hacer otro para poder luego abrir uno
00:07:57
otro archivo, gastos, pues venga
00:07:59
ingresos
00:08:02
ya lo tenemos
00:08:04
guardado
00:08:05
Archivo guardado
00:08:12
Ya tenemos dos archivos guardados con el contenido
00:08:14
Vamos a suponer que le damos a cerrar
00:08:16
Pues ya está, cerrado, aquí no hay nada
00:08:18
Vamos a abrir uno de ellos
00:08:20
Nos hemos equivocado poniendo el nombre
00:08:22
Uy, no existe, pon uno que exista
00:08:24
Gastos
00:08:27
Que habíamos hecho uno, se llamaba gastos, ¿verdad?
00:08:28
Gastos
00:08:32
Pues ala, aquí está
00:08:32
Que lo quiero guardar
00:08:33
Con otro nombre
00:08:37
Pues venga, guardar como
00:08:37
Gastos 2
00:08:39
ala, guardado
00:08:42
y ya está aquí como gastos 2, ahora tengo 3 archivos
00:08:46
ingresos, gastos, gastos 2, puedo abrir el que quiera
00:08:48
por ejemplo, vamos a abrir el de ingresos
00:08:52
pues este era el de ingresos
00:08:55
y ya está, ya tenemos todas las opciones
00:08:59
simuladas y completas, claro, le faltan cosas
00:09:02
por pulir, pues si yo aquí he editado este
00:09:05
no le doy a guardar
00:09:09
y me pongo a abrir otro
00:09:12
todo lo que yo he editado lo ignora
00:09:13
entonces hombre, pero eso en el menú
00:09:15
abrir puedo decir antes
00:09:18
puedo meter antes el código para hacer una pregunta
00:09:19
¿quiere guardar lo que ya hay?
00:09:22
y darle a guardar este archivo
00:09:24
con el nombre de arriba
00:09:26
antes de abrir lo otro, eso ya
00:09:27
¿vale? porque si no aquí
00:09:28
el de ingresos
00:09:32
la modificación que yo he hecho
00:09:34
no se habrá hecho, de hecho si lo vuelvo a abrir
00:09:35
no se guarda
00:09:37
sin la modificación, lógicamente
00:09:43
vale, pues todo este funcionamiento
00:09:44
del menú está bastante
00:09:47
completo, salvo por eso y salvo por el bloque
00:09:49
infinito de abrir
00:09:51
que está ahí, como yo no le di un archivo que exista
00:09:52
bueno, pues entonces esta tarde
00:09:55
subo esto para quien lo
00:10:02
quiera utilizar, pero la idea es que lo completéis
00:10:04
vosotros y
00:10:06
más que perderos
00:10:08
ahora mucho en las otras opciones
00:10:10
las de utilidades, son rápidas de hacer
00:10:12
sobre todo
00:10:14
quiero que de la otra hoja, esta de aquí
00:10:16
pues os pongáis con estos últimos
00:10:18
estos últimos
00:10:21
si no los habéis hecho
00:10:23
¿vale? que permiten un poco practicar
00:10:24
programación también, clases y todo eso
00:10:27
y ahora lo otro que estabais
00:10:29
hablando, vamos a ver
00:10:31
otras opciones para
00:10:33
capturar
00:10:36
los eventos
00:10:38
o sea, para hacer esta clase
00:10:43
a ver, ¿qué problema
00:10:44
habíamos tenido nosotros
00:10:46
cuando archivo 1, archivo 2
00:10:49
era local
00:10:50
cuando archivo 1, archivo 2
00:10:51
era local, el problema que teníamos
00:10:54
era que no es visible
00:10:56
desde esta clase interna
00:10:58
entonces hemos solucionado que no sea visible
00:10:59
sacándolo fuera
00:11:02
vale
00:11:04
pero si nosotros no queremos sacarlo fuera
00:11:05
vamos a volver a meterlas dentro
00:11:08
bueno no, porque voy a estropear este
00:11:10
tengo la otra clase hecha abajo
00:11:12
vale, vamos a suponer que no queremos
00:11:14
sacarlo afuera por la razón que sea
00:11:16
o que no podemos sacarlo fuera
00:11:18
¿qué solución tenemos?
00:11:19
bueno, pues yo aquí tengo otra clase interna
00:11:22
esta otra de aquí
00:11:24
¿dónde está?
00:11:25
captura menú 2, esta
00:11:39
en captura menú 2
00:11:40
entonces, ¿cuál es aquí el problema?
00:11:43
el problema aquí es que a esta variable yo no puedo acceder
00:11:44
porque es local
00:11:47
a esta variable no puedo acceder, ese es mi problema
00:11:48
que a esta variable no puedo
00:11:51
entonces, ¿qué tengo que hacer?
00:11:52
pues hacerme un constructor
00:11:54
en esta capturadora
00:11:56
un constructor que la reciba
00:11:58
que la reciba
00:12:01
la recibe
00:12:02
y la utiliza para inicializar
00:12:04
una variable de clase
00:12:07
y ahora ya puede acceder aquí
00:12:08
porque está accediendo a la variable de clase
00:12:10
y esta variable de clase
00:12:12
a la que puede acceder
00:12:15
sin ningún problema lógicamente
00:12:16
la ha inicializado con lo que ha recibido
00:12:18
desde aquí
00:12:21
¿vale?
00:12:21
entonces, ahora ¿cuál es la diferencia?
00:12:25
que cuando llamemos a
00:12:27
cuando al ítem
00:12:28
le pasemos el listener
00:12:30
cuando uno hiciera esto
00:12:32
lo pongo en comentarios porque está fuera de
00:12:34
código, claro
00:12:36
si cuando al archivo 1
00:12:37
le añadieramos el addActionListener
00:12:40
le tendríamos que pasar
00:12:42
captura
00:12:50
menú 2
00:12:53
y a captura menú 2 le tengo que pasar
00:12:54
yo el ítem
00:12:56
el ítem con el que
00:12:58
va a inicializar esto para trabajar
00:13:00
es decir, le tendríamos que pasar
00:13:02
esto, esta sería la diferencia
00:13:04
entonces
00:13:11
le pasamos por parámetro archivo 1
00:13:13
que es a la variable a la que quiere acceder, se la pasamos
00:13:15
por parámetro, entonces
00:13:17
captura menú 2, la recoge
00:13:19
y la usa para
00:13:21
inicializar esto, con lo cual
00:13:22
ahora esta y esta
00:13:25
la local del método, esta sería la local del método
00:13:26
que yo le he pasado, pues ahora
00:13:29
la local del método y esta
00:13:31
tienen lo mismo
00:13:33
porque yo esta la he pasado
00:13:34
por parámetro aquí
00:13:37
con lo cual la local del método
00:13:38
y esta tiene lo mismo
00:13:40
entonces ahora ya captura menudos en su acción
00:13:41
performe, ya puede acceder a esta
00:13:44
sin problema, porque es esta
00:13:45
que a su vez es idéntica
00:13:47
a la local del método
00:13:49
lo que pasa es que esto es un rollo
00:13:51
porque tendría que hacerlo con todas
00:13:53
las variables locales
00:13:56
tendría que pasarle todas, es un constructo al que le pasan
00:13:57
muchas cosas, entonces se hace un poco
00:13:59
pesado
00:14:02
claro, yo aquí
00:14:02
he hecho esto solo para ver como se haría
00:14:05
Entonces, archivo 1 lo tiene resuelto, archivo 1 ya la tiene resuelto, pero archivo 2 no la tiene resuelta. Entonces, tendría que pasar, tendría que hacer aquí propiedades para recoger todas las variables locales del constructor y luego pasárselas todas por aquí.
00:14:07
¿eh? y aquí claro
00:14:26
y aquí declararlas también, claro
00:14:32
¿vale? entonces bueno
00:14:34
si tengo muchas
00:14:36
a las que acceder, pasárselas
00:14:38
todas por parámetro, o bueno, puedo hacer algo mucho más
00:14:40
cómodo, que es pasarle el frame
00:14:42
ah no, porque sigue siendo local
00:14:44
entonces el frame no le, nada, no, no
00:14:46
olvídalo, como sigue siendo local
00:14:48
a través del frame no puedes
00:14:49
¿vale? si la variable es local al constructor
00:14:51
claro, pero para
00:14:54
pasar el frame entero
00:14:56
las variables tendrían que ser
00:14:57
propiedades del frame
00:15:00
para luego poder acceder a ellas
00:15:01
pero si son locales al constructor
00:15:02
pasando el frame no arreglo nada
00:15:05
vale, pues venga
00:15:06
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 6 de mayo de 2024 - 19:42
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 15′ 24″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 79.13 MBytes