Clase 07-05-2024 - 1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Un poquito por encima para que a partir de ahí ya podéis investigar y hacer muchas más cosas, ¿vale?
00:00:02
Ya con eso dejaríamos completado pues lo que vamos a ver de Swing, que es una especie de visión, visión global por encima de cómo funciona, de las posibilidades que tiene y a partir de ahí ya uno se mete y hace lo que quiera, pero nosotros nos quedamos aquí.
00:00:10
Bueno, ¿qué nos ha faltado? ¿Qué nos ha faltado a nosotros ahora en interfaces gráficas?
00:00:26
pues sí, mucha interfaz gráfica
00:00:31
pero ahí ni hemos dibujado
00:00:33
ni hemos hecho nada
00:00:36
no pide el cuerpo dibujar un poco
00:00:36
no
00:00:40
hemos puesto botones, comandos
00:00:40
y ya está, pero no hemos dibujado
00:00:44
y una interfaz gráfica pues uno a lo mejor querría también
00:00:45
hacer sus propias figuras, sus cuadraditos
00:00:47
sus cosas, de eso no hemos hecho nada
00:00:49
lo que hemos metido es componentes que ya existen
00:00:51
nada más, normalmente
00:00:54
una interfaz gráfica
00:00:56
es eso, un conjunto
00:00:57
de componentes de una paleta
00:01:00
que uno
00:01:02
diseña, elabora un prototipo
00:01:03
y ya está, pero uno también tiene que poder
00:01:06
dibujar sus propios elementos
00:01:08
a veces, bueno pues
00:01:10
efectivamente hay una clase
00:01:12
que permite dibujar
00:01:14
que es la clase graphics
00:01:15
lo que pasa es que la clase graphics
00:01:17
no es una clase que uno instancie
00:01:20
que pueda instanciar
00:01:22
y usar sus métodos para dibujar
00:01:23
no funciona así
00:01:26
uno no instancia un objeto
00:01:27
de la clase graphics y dibuja, no
00:01:29
los objetos de la clase
00:01:31
graphics tienen que
00:01:33
recibirse a través
00:01:35
de un método
00:01:37
y entonces tú coges el parámetro que has
00:01:38
recibido, o sea, es una estructura un poco medio
00:01:41
rara, la que hace, pero bueno
00:01:43
vamos a ver un poquito por encima como es y ya está
00:01:45
a ver, por ejemplo
00:01:47
ejemplo graphics, aquí
00:01:49
pues vamos a ver, vamos a hacernos una clase
00:01:51
un frame
00:01:58
vamos a hacernos
00:02:00
un frame
00:02:05
vale, aquí tenemos nuestro frame
00:02:06
y vamos a hacer
00:02:23
el constructor
00:02:30
y el constructor, pues ahora mismo lo único
00:02:31
que va a tener es, vamos a darle
00:02:38
un tamaño
00:02:40
y que sea visible
00:02:41
a ver, para que no me aparezca
00:02:50
todo el rato en la esquina, le vamos a poner
00:02:57
en unas
00:02:59
aquí
00:03:00
pero este, si yo le pongo coordenadas
00:03:01
No era setSize, sino setBounce, ¿verdad?
00:03:07
Sí, vale
00:03:09
Vale, entonces este es mi frame
00:03:09
Que vamos, bueno, voy a hacer un main, claro
00:03:12
Para poder ejecutar esto
00:03:15
A ver
00:03:17
Vale, pues nada
00:03:18
Eh, ala, ya está
00:03:41
Pues ya está
00:03:47
Este es mi frame, que no tiene nada
00:03:57
Tiene un panel por defecto
00:03:59
Porque ya sabemos que todos los frames vienen con un panel por defecto
00:04:01
Pero panel por defecto
00:04:04
Al que yo no le he puesto nada todavía
00:04:06
No le he puesto ningún componente ni nada
00:04:08
Espera, le voy a poner lo del
00:04:09
Para que se salga
00:04:12
Como era ese método
00:04:16
This.set
00:04:19
Default close operation
00:04:22
Este será
00:04:26
Y esto era
00:04:27
Exit on close
00:04:28
Sería
00:04:32
Imagina
00:04:32
Así, ¿no? Con esto ya se cierra
00:04:34
Sí, vale
00:04:38
bueno, ya está, mi frame básico
00:04:48
que no tiene nada, salvo la opción de cerrar
00:04:52
colocarlo en coordenada
00:04:54
x100 y 100, tamaño
00:04:56
500, 400
00:04:58
ser visible y se acabó
00:05:00
vale, pues nosotros ahora
00:05:04
queremos dibujar en el panel
00:05:06
queremos dibujar en el panel que tiene por defecto
00:05:08
vale, pues necesitamos un objeto
00:05:10
graphics que es el que me provee de los métodos
00:05:12
para dibujar, dibujar cuadraditos, dibujar no sé qué
00:05:14
rellenarlos, patatín, necesito
00:05:16
ese objeto graphics, ese objeto graphics
00:05:18
no lo podemos instanciar
00:05:20
aquí, no podemos hacer
00:05:22
un graphics
00:05:24
new graphics e instanciarlo
00:05:25
y a partir de ahí dibujar, no podemos hacerlo
00:05:28
este objeto graphics que es el que
00:05:30
necesitamos para dibujar, tenemos que cogerlo
00:05:32
a través de un
00:05:34
método que se llama paint
00:05:36
que lo recibe como parámetro
00:05:38
bueno y ese método paint de donde ha salido
00:05:39
vale pues
00:05:42
los contenedores como los
00:05:44
frames, los paneles
00:05:46
son clases que ya existen en Java
00:05:47
obviamente, JPanel
00:05:50
JFrame, ya existen
00:05:52
y tienen un método Paint
00:05:54
que yo puedo sobreescribir o no
00:05:56
si quiero
00:05:58
entonces el método Paint es un método
00:05:59
que es el que la máquina virtual
00:06:03
llama automáticamente
00:06:04
cuando tiene que redibujar el panel
00:06:06
o el frame, ¿cuándo lo tiene que redibujar?
00:06:08
pues cuando uno da un clic
00:06:11
obviamente lo tiene que redibujar
00:06:12
porque lo que tú visualmente ves
00:06:14
ha cambiado, de hecho al hacer el clic el botoncito
00:06:16
ha cambiado mínimamente el color
00:06:18
en algún momento, tú ves físicamente
00:06:20
el botón hundiéndose o cambiando de color
00:06:22
entonces cada vez que haces algo
00:06:24
en el que tú físicamente has visto
00:06:26
que algo ha cambiado o cuando
00:06:28
redimensionas una ventana
00:06:29
cualquier cosa, ahí se está llamando
00:06:32
automáticamente al método paint
00:06:34
sin que todos lo veamos, sin que todos lo hagamos
00:06:36
¿vale?
00:06:38
cada vez que se hace algo que cambia
00:06:40
el aspecto de la ventana
00:06:42
cualquier cosa que hagamos
00:06:44
se está llamando automáticamente a ese método
00:06:47
que no lo hemos hecho nosotros
00:06:49
pero ese método lo tiene ya
00:06:51
la clase JFrame, lo tiene ya
00:06:53
la clase JPanel
00:06:55
entonces desde el momento en que le damos de JFrame
00:06:56
o cuando usamos un panel
00:06:58
ya tienen ese método Paint
00:07:00
entonces por eso no lo tenemos que hacer
00:07:02
porque ya está hecho y se llama automáticamente
00:07:03
para redibujar
00:07:06
entonces Paint es el método que sirve para
00:07:07
dibujar en pantalla
00:07:10
lo que nosotros vemos
00:07:12
ese método
00:07:13
entonces, resulta que ese método Paint
00:07:14
es el que recibe como
00:07:18
parámetro un objeto
00:07:19
Graphics, entonces si yo
00:07:21
sobreescribiera el Paint, ese método
00:07:23
si yo lo sobreescribo
00:07:25
ya tengo el objeto Graphics
00:07:26
porque es un parámetro del Paint
00:07:29
luego lo puedo utilizar dentro del Paint
00:07:32
ese Graphics
00:07:33
entonces, ¿qué tengo que hacer?
00:07:35
sobreescribir el método Paint
00:07:37
y a través de él
00:07:39
puedo sacar ya el Graphics para dibujar
00:07:40
bueno, pues esa es la idea
00:07:43
esa es la idea
00:07:45
¿vale? entonces todo, como veis
00:07:46
todo parte de las ideas que ya conocemos
00:07:48
y que se supone que tenemos interiorizadas
00:07:51
pues de herencia, de sobrescribir
00:07:52
de parámetros, de todo eso
00:07:54
todo está construido sobre esas ideas
00:07:56
que se supone que hemos ido cogiendo a largo del curso
00:07:58
vale, vamos a hacer una cosa
00:08:01
vamos a hacer nosotros un panel
00:08:02
que herede de jPanel
00:08:04
y vamos a sobrescribir el paint
00:08:06
entonces ya automáticamente al sobrescribir
00:08:08
el paint ya tenemos el grafis, que es lo que queremos
00:08:11
y ese panel vamos a hacer que sea
00:08:12
el panel por defecto de ese frame
00:08:15
con lo cual todo lo que dibujemos a través de ese
00:08:16
gráfico va a aparecer en el panel
00:08:19
que es lo que queríamos, entonces es una posibilidad
00:08:20
para dibujar
00:08:23
pero uno puede sobre escribir el paint de frame
00:08:24
que también lo tiene, bueno
00:08:27
pues venga, vamos a hacernos
00:08:28
aquí
00:08:31
una clase que herede
00:08:31
de jPanel
00:08:40
vale
00:08:42
jPanel es la clase
00:08:43
panel que existe en swing
00:08:48
entonces yo puedo hacer mi propia clase
00:08:50
heredando de ella
00:08:52
ala, si yo aquí no hago nada más
00:08:53
mi panel
00:08:57
es idéntica a jPanel
00:08:58
idéntica, vale
00:09:00
pues entonces, pero vamos a sobrescribir paint
00:09:04
entonces
00:09:06
el método paint, vamos a ver
00:09:07
si me lo pone como sobrescrito
00:09:10
porque si no me lo pone como sobrescrito
00:09:12
voy a mirarlo en
00:09:14
alguna chuleta
00:09:15
vale, he acertado con la cabecera
00:09:17
vale, veis que
00:09:27
efectivamente
00:09:30
en cuanto yo he escrito esta cabecera
00:09:32
en cuanto yo la he escrito
00:09:34
me ha puesto aquí el símbolo
00:09:36
de está sobrescribiendo
00:09:38
el paint, perfecto
00:09:40
es justo lo que quería, si me hubiera
00:09:42
equivocado y hubiera puesto
00:09:44
aquí otra cosa
00:09:46
pues ya obviamente
00:09:47
no estoy sobrescribiendo
00:09:49
el paint, sino que estoy haciendo otro método distinto
00:09:52
pero yo no
00:09:54
quiero hacer otro método, quiero sobreescribir este
00:09:56
porque este es el que se llama automáticamente
00:09:58
se llama cuando
00:10:00
el panel se tiene que redibujar
00:10:02
a ver si se tiene que redibujar
00:10:04
vale, pues entonces
00:10:05
ahora ya a través
00:10:07
de este
00:10:11
método paint de aquí
00:10:12
ya tengo un graphics para dibujar
00:10:15
que es este
00:10:17
y este graphics aquí tiene
00:10:18
un montonazo de métodos
00:10:21
de dibujo, hacer rectas
00:10:23
líneas, dibujar no sé qué
00:10:26
todo, todo tipo de
00:10:27
tonterías, por ejemplo
00:10:29
vamos a dibujar un
00:10:31
un
00:10:33
un óvalo
00:10:36
que esté
00:10:42
pues yo que sé si la ventana está en
00:10:48
imagino
00:10:50
que eso será coordenada X, coordenada Y
00:10:52
vamos a probar
00:10:54
150 a 150
00:10:55
y que sea pues de
00:10:58
60 a 60
00:11:00
o sea pequeñajo
00:11:02
vale
00:11:03
he dibujado este cacharro de aquí
00:11:05
vale, entonces ahora
00:11:08
este panel cada vez que
00:11:10
se tenga que dibujar
00:11:12
porque ha cambiado el aspecto de la ventana
00:11:14
o lo que sea, pues va a llamar a paint
00:11:16
en este caso
00:11:18
el paint lo único que hace es dibujar
00:11:21
el mismo óvalo una y otra vez
00:11:23
pero yo aquí podría jugar y hacer mil cosas
00:11:24
pues hacer una variable
00:11:27
que esa variable se fuera incrementando
00:11:29
y lo multiplicara por aquí
00:11:31
con lo cual cada vez que redimensiono
00:11:34
el panel, el óvalo se va haciendo cada vez más grande
00:11:36
más grande, yo aquí ya con esto ya podría hacer
00:11:38
mil combinaciones y mil historias
00:11:40
solo con esta idea, a partir de esta idea
00:11:42
ahora mismo mi paint dibuja todo el rato
00:11:44
el mismo óvalo, todo el rato, vale
00:11:46
pero a ver, este panel
00:11:48
es el que tiene que estar en la interfaz, claro
00:11:49
es el que tiene que estar, entonces vamos a
00:11:52
fijar
00:11:54
al mi frame, que su panel por
00:11:56
defecto sea este
00:11:58
new
00:12:00
como se llama
00:12:06
la clase que hemos hecho, mi panel
00:12:09
vale, pues entonces, mi frame
00:12:10
su panel por defecto hemos puesto
00:12:20
que sea ese que hemos
00:12:22
hecho, vale
00:12:24
y este panel
00:12:25
pues lo que hace es dibujar esto de aquí
00:12:27
y a partir
00:12:29
de aquí pues podría
00:12:32
ya hacer cualquier cosa que quisiera
00:12:33
vale, vamos a probarlo
00:12:36
a ver si me ha escapado algo o vemos el OVA
00:12:37
no lo vemos porque así sobre la
00:12:39
marcha es muy probable que me haya escapado
00:12:41
algo
00:12:43
vale, pues no, pues ala, ahí está
00:12:44
el dibujillo
00:12:47
entonces con esta estructura
00:12:48
con esta es la idea, ya uno puede dibujar
00:12:51
y hacer cualquier chorrada
00:12:53
entonces, por ejemplo
00:12:55
yo os
00:12:56
propondría
00:13:01
que os entretengáis, primero haciendo
00:13:02
los ejercicios que tenéis que hacer
00:13:05
porque ese es nuestro examen
00:13:06
y luego ya
00:13:08
que os entretengáis haciendo esto, que se hace rapidísimo
00:13:09
Y podéis, por ejemplo, a ver, ¿dónde lo tenemos? Aquí, creo.
00:13:13
Por ejemplo, esto de aquí se hace en dos líneas, ¿vale?
00:13:28
Que le quiero cambiar, por ejemplo, la velocidad, pues le voy a poner este 3 y 3.
00:13:36
Ahora va más rápido
00:13:51
Que quiero ir
00:13:56
Que vaya a toda leche
00:14:00
¿Vale?
00:14:01
No, es imposible
00:14:10
Vale, pues entonces
00:14:12
Cuando acabéis los ejercicios
00:14:15
Tratad de hacer algo así con el graphics
00:14:19
Que más o menos
00:14:20
Para consolidar esta idea
00:14:21
Y ya está
00:14:24
¿Vale?
00:14:27
Entonces
00:14:29
Repito
00:14:30
Para dibujar el objeto que dibujas
00:14:31
un objeto de esta clase
00:14:35
este no se instancia en cualquier sitio de cualquier manera
00:14:36
este lo recibe
00:14:39
como parámetro este método
00:14:40
con lo cual yo tengo que dibujar dentro del paint
00:14:42
tengo que dibujar dentro del paint
00:14:45
y el paint donde está
00:14:47
el paint es un método
00:14:49
de los paneles o de los frames
00:14:51
entonces yo los puedo sobre escribir
00:14:52
también puedo sobre escribir
00:14:54
el paint de frame, de hecho aquí
00:14:56
si me hago un
00:14:58
dentro del frame
00:15:00
me hago esto
00:15:03
también aparece como sobrescrito
00:15:06
este está directamente en el frame
00:15:10
y en cuanto lo he escrito
00:15:12
me ha aparecido
00:15:16
efectivamente estoy sobrescribiendo el paint
00:15:20
de frame
00:15:22
lo que pasa es que lo normal es que uno trabaje
00:15:23
con paneles, meta componentes
00:15:26
a paneles, dibuje en paneles, etc
00:15:28
se trabaja con paneles
00:15:30
uno o muchos, los que uno quiera
00:15:31
no directamente en el frame, el frame suele ser un elemento
00:15:33
raíz para luego ya poner uno
00:15:36
varios paneles, lo que uno quiera
00:15:38
¿vale?
00:15:39
Vale, entonces, repito, el Paint se invoca automáticamente
00:15:43
cada vez que uno hace algo con la ventana
00:15:48
que obliga a que sea redibujada.
00:15:51
Pero uno lo puede invocar por código,
00:15:54
que es lo que yo he tenido que hacer aquí
00:15:57
para que la peloteja esta se moviera.
00:15:59
O sea, cada vez que la pelota se mueve
00:16:02
es porque se está llamando al Paint
00:16:05
y el Paint la dibuja en otro sitio, simplemente.
00:16:07
El Paint la dibuja en otro sitio.
00:16:10
Entonces, aquí el Paint se está llamando
00:16:12
no se está llamando porque la ventana
00:16:13
cambie, entonces ¿cómo puede uno llamar
00:16:16
al paint por código? también puede llamar al paint
00:16:18
por código, ¿por qué? porque
00:16:20
existe repaint
00:16:23
¿vale? entonces, por ejemplo
00:16:25
aquí
00:16:27
mi panel es que no le he puesto una referencia
00:16:28
entonces no puedo llamar a repaint, vamos a
00:16:35
darle una referencia
00:16:37
igual a esto
00:16:38
y ahora aquí pongo panel
00:16:45
¿veis? existe el método
00:16:53
Repaint por código
00:17:05
Que por código obligas a que se redibuje el panel
00:17:06
Entonces por ejemplo
00:17:09
Vamos a hacer eso que os he dicho
00:17:12
Rápidamente
00:17:14
Pues que el óvulo
00:17:14
En que estaría pensando yo
00:17:16
Que el óvalo encoja
00:17:17
Vamos a hacer una
00:17:19
Una variable
00:17:22
A ver
00:17:26
Vamos a pensar
00:17:27
Que hay que hacerlo de vez en cuando
00:17:30
Queremos
00:17:31
Que este método Paint
00:17:33
el tamaño
00:17:35
sea 60 o sea
00:17:36
120 en función del valor
00:17:39
de una variable
00:17:41
¿vale? una variable
00:17:42
sí, entonces
00:17:44
aquí esto en lugar de 60
00:17:46
en lugar de 60
00:17:49
esto va a ser una variable
00:17:50
el tamaño del óvalo va a ser un tamaño variable
00:17:53
¿vale? esa variable
00:17:55
¿cómo la recibo?
00:17:57
no puedo recibirla por parámetro
00:17:59
porque este método tiene que ser el sobrescrito
00:18:00
luego de la cabecera
00:18:03
no puedo tocar nada, de ese método no lo puedo
00:18:04
tocar, entonces
00:18:06
esta variable no la puedo recibir por parámetro
00:18:08
no queda más remedio que sea una variable de clase
00:18:10
¿vale? tienes una variable de clase
00:18:13
vale
00:18:15
ahora ya sí
00:18:16
entonces, esta variable de clase
00:18:17
esta variable de clase
00:18:20
la tengo yo que pasar
00:18:22
a... espera
00:18:27
no, es que
00:18:31
lo voy a complicar demasiado
00:18:32
tenemos una idea mejor
00:18:35
así, que es
00:18:41
como esta es una clase interna
00:18:43
como es una clase interna, tiene acceso
00:18:45
a todas las variables de la clase
00:18:48
en la que está, que para eso de hecho
00:18:50
tiene sentido que sea interna
00:18:52
entonces, esta variable
00:18:53
tamaño que esté aquí
00:18:55
¿vale?
00:18:57
esta variable tamaño está aquí, este es el tamaño del
00:18:59
del óvalo
00:19:02
del círculo, ese es el tamaño
00:19:03
¿vale? ese es el tamaño
00:19:05
entonces, cada vez que se llama el método paint
00:19:06
el tamaño será el que figura
00:19:10
en esta variable, eso está claro
00:19:12
cada vez que se haga
00:19:13
se llame a este método
00:19:15
el tamaño con el que se dibujará
00:19:17
será el que diga esa variable
00:19:19
el que diga
00:19:21
vale, pues entonces podemos meternos aquí en un bucle
00:19:22
infinito
00:19:25
en el que estamos
00:19:26
continuamente repintando
00:19:29
el panel
00:19:35
pero
00:19:36
cambiando el n
00:19:38
vale
00:19:40
Por ejemplo así
00:19:42
Podemos hacer un
00:19:44
Un contador
00:19:47
Que empieza siendo 0
00:19:53
Lo vamos incrementando aquí
00:19:55
Y ahora cuando sea par
00:19:58
N tiene un valor y cuando sea impar
00:20:04
Tiene otro, por ejemplo
00:20:06
Entonces N va a ser igual a
00:20:07
El resto de dividir
00:20:09
C entre 2
00:20:12
es igual a 0
00:20:14
pues entonces
00:20:16
n que es el tamaño
00:20:18
del círculo va a ser
00:20:21
50 y si no
00:20:22
va a ser 100
00:20:27
vale, entonces
00:20:29
n va cambiando
00:20:31
de valor 50, 100, 50, 100
00:20:33
50 y 100 en cada iteración del bucle
00:20:35
¿verdad? en cada iteración
00:20:37
entonces cada iteración del bucle
00:20:39
me dibuja el panel con un tamaño
00:20:41
del óvalo distinto
00:20:43
Y
00:20:45
Este de aquí me dice
00:20:47
Como es wild true, no llegas nunca aquí
00:20:50
Etcétera, etcétera
00:20:52
Código inalcanzable, porque el wild true es normal
00:20:53
Que no le guste, etcétera
00:20:56
Entonces vamos a poner
00:20:58
El wild true
00:20:59
Aquí debajo
00:21:05
Vamos a hacer una cosa
00:21:07
Vamos a probarlo y ya paramos, vale
00:21:11
Que no quiero ponerlo después del set visible
00:21:22
Entonces vamos a ponerlo
00:21:27
Vamos a dejarlo donde estaba
00:21:29
Y esto
00:21:32
Lo voy a sacar
00:21:33
Aquí
00:21:38
Y aquí pongo
00:21:41
V
00:21:52
V
00:21:54
Y V
00:21:57
Vale, y esto lo quito
00:21:59
Vale, entonces
00:22:03
¿Qué ocurre?
00:22:09
Que si, como esto es instantáneo
00:22:10
El repaint se está haciendo
00:22:13
Cada nanosegundos
00:22:15
Yo no me va a dar tiempo a ver
00:22:16
Lo del, de hecho vamos a probarlo
00:22:18
No vamos a ver nada
00:22:20
Claro, es que tengo el set visible después
00:22:21
Es que claro, el while true es muy mala idea
00:22:28
El while true es muy mala idea
00:22:29
Vamos a dejarlo como estaba
00:22:31
Así
00:22:40
Y vamos a poner
00:22:41
Mientras c
00:22:44
Sea menor
00:22:46
Que
00:22:48
Diez mil
00:22:50
Vale
00:22:53
Entonces
00:22:54
Así es que no nos da tiempo a ver nada
00:22:57
no podemos ver nada
00:23:02
entonces vamos a hacer que pare
00:23:04
la ejecución un segundo
00:23:06
que pare la ejecución un segundo
00:23:08
cambie esto, la pare un segundo
00:23:10
y haga el repaint
00:23:12
incremente c
00:23:13
vuelvo a poner n
00:23:15
la pare otro segundo y haga el repaint
00:23:17
entonces como se para un programa
00:23:19
como se detiene una ejecución un ratito
00:23:22
pues simplemente haciendo esto
00:23:23
con esta sentencia
00:23:26
que es el método
00:23:32
estático sleep de esta clase
00:23:34
se queda parado el programa detenido
00:23:36
es como una pausa, es como hacer un pause
00:23:39
como cuando uno hace un system pause
00:23:40
¿cuántos milisegundos?
00:23:42
los milisegundos que uno le diga aquí
00:23:45
¿vale?
00:23:46
entonces en este caso un segundo
00:23:48
¿qué ocurre? que este método
00:23:50
lanza una excepción de las que
00:23:52
estamos obligados a capturar
00:23:55
o a propagar
00:23:57
porque es de tipo exception, es un time exception
00:23:58
entonces me obliga, pues venga
00:24:00
captúrala y ya está
00:24:03
A la capturada
00:24:05
Vale, entonces ahora
00:24:06
Vale, vamos a
00:24:11
A ver, es que
00:24:21
Claro, no lo veo, tengo el set visible después
00:24:27
Vale, es que estoy metiéndome
00:24:34
Unos berenjenales yo sola
00:24:36
Para enseñaros esto
00:24:37
Vale, vamos a parar aquí
00:24:39
Vale, he dado pausa
00:24:40
Vale, vamos a ver
00:24:46
Donde estábamos
00:24:48
vale, pues el bucle
00:24:49
que muestra, que dibuja
00:24:56
que hace el dibujito
00:24:58
el bucle que repinta cada vez
00:24:59
con un tamaño de
00:25:02
circulito distinto, este de aquí
00:25:03
lo he puesto
00:25:06
después del set visible para que se vea
00:25:08
por ejemplo lo tenía puesto antes, por eso no lo veía
00:25:10
lo he puesto después y se acabó
00:25:12
entonces ahora efectivamente
00:25:13
si uno ejecuta esto
00:25:16
pues lo que sale
00:25:17
me hace el primer dibujo, el segundo
00:25:22
vuelvo a hacer el primero, pero ya no lo veo
00:25:24
porque está encima
00:25:26
me hace el primero, pasa un segundo
00:25:27
me hace el otro, pasa un segundo
00:25:31
me hace el grande de nuevo, pero claro, ya no lo veo
00:25:32
porque está el otro
00:25:34
pero sí que me está haciendo el pain
00:25:37
aunque yo ahí no lo vea
00:25:39
lo podría estar viendo si
00:25:40
este n
00:25:43
en lugar de ir variando entre 50 y 100
00:25:45
fuera creciendo, por ejemplo
00:25:47
pero así veo el primero
00:25:48
veo el segundo, el tercero ya no lo veo
00:25:50
porque está encima del primero, etc.
00:25:53
Entonces, ¿qué es lo que nos faltaría?
00:25:54
Claro, este método sobrescrito de aquí
00:25:57
Este método paint de aquí sobrescrito
00:25:59
Dibuja sobre lo que ya había de antes en el panel
00:26:03
Dibuja sobre lo que ya había
00:26:08
Si yo no quiero que dibuje sobre lo que ya había
00:26:10
Sino que dibuje de limpias y de cero
00:26:12
Tengo que volver a llamar
00:26:14
Tengo que llamar al paint del JPanel
00:26:18
super es el objeto
00:26:23
del queredo, la clase de la queredo
00:26:27
tengo que llamar al paint del jPanel
00:26:29
y entonces como me reinicia
00:26:31
el panel de cero
00:26:33
me lo limpia, entonces ahora ya si
00:26:33
si ya lo ejecuto
00:26:37
ahora ya cada segundo que pasa
00:26:38
hace el paint
00:26:41
pero ya sobre un panel limpio
00:26:42
vale
00:26:47
bueno pues ya con este objeto, con todos los métodos
00:26:47
que tiene y
00:26:53
combinando simplemente esto
00:26:55
que para la ejecución
00:26:57
El tiempo que uno quiera
00:26:58
Podéis hacer cualquier cosa
00:27:00
En realidad
00:27:01
¿Vale?
00:27:02
Con esta estructura de aquí
00:27:03
Relacionada con dibujo
00:27:04
Si uno quiere dibujar
00:27:07
O hacer cualquier chorrada
00:27:08
¿Vale?
00:27:09
Venga
00:27:11
Y ahora ya se
00:27:12
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 11 de mayo de 2024 - 0:16
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 27′ 12″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 113.44 MBytes