sábado, 22 de marzo de 2014

Capacidades gráficas del AWT: Métodos paint(), repaint() y update()

La clase Component tiene tres métodos muy importantes relacionados con gráficos: paint(), repaint() y updatef). Cuando el usuario llama al método repaintO de im componente, el AWT llama al método updatef) de ese componente, que por defecto llama al método paintQ. 
  Método paint(Graphics g) El método paintO está definido en la clase Component. pero ese método no hace nada y hay que redefinirlo en una de sus clases derivadas. El programador no tiene que preocuparse de llamar a este método: el sistema operativo lo llama al dibujar por primera vez una ventana, y luego lo vuelve a llamar cada vez que entiende que la ventana o una paite de la ventana debe ser re-dibujada (por ejemplo, por haber estado tapada por otra ventana y quedar de nuevo a la vista). 
  Método update(Graphics g) El método updateQ hace dos cosas: primero re-dibuja la ventana con el color de fondo y luego llama al método paintf). Este método también es llamado por el AWT. y también puede ser llamado por el programador, quizás porque ha realizado algún cambio en la ventana y necesita que se dibuje de nuevo. La propia estructura de este método -el comenzar pintando de nuevo con el color de fondo- hace que se produzca parpadeo (flicker) en las animaciones. Una de las formas de evitar este efecto es redeíinir este método de una forma diferente, cambiando de una imagen a otra sólo lo que haya que cambiar, en vez de re-dibujar todo otra vez desde el principio. Este método no siempre propor- ciona los resultados buscados y hay que recurrrir al método del doble buffer. 
  Método repaint() Este es el método que con más frecuencia es llamado por el programador. El método repaintO llama "lo antes posible" al método updatef) del componente. Se puede también especificar un número de milisegundos para que el método update() se llame transcurrido ese tiempo. 
El método repaint() tiene las cuatro formas siguientes: repaint() 
repaint(long time) 
repaint(int x, int y, int w, int h) 
repaint(long time, int x, int y, int w, int h) 
Las formas tercera y cuarta permiten definir una zona rectangular de la ventana a la que aplicar el método.

No hay comentarios:

Publicar un comentario