¿Por qué se borra mi componente al redimensionar la ventana?
Artículo por Club Developers · 31 mayo 2006
1964 vistas
Las soluciones tomadas por SUN para el dibujado de los componentes son bastante complejas por lo que pueden probocar numerosos errores, sobre todo a los principiantes.
¿Cuándo se dibuja un componente?
Lo más importante es entender cuándo y por qué se ejecutan los métodos paint(AWT) y paintComponant(SWING). La primera causa es una petición explÃcita mediante el método repaint(). La segunda causa es una petición del sistema, ya sea debido a un redimensionado, o por ser ocultado por otra ventana del sistema.
Regla que tenemos que respetar:
Cualquier programador que redefina el método paint(AWT) o paintComponent(Swing) se ve obligado a redibujar la totalidad de la superficie del componente. En realidad, el objeto Graphics transmitido al componente debuja siempre en el mismo espacio de memoria el cual nunca se limpiará (por razones de rendimiento). Por lo tanto, el programador del componente tiene que encargarse de limpiar el espacion y de redibujar el componente. Si el componente es complejo y su dibujado es largo, es recomendable usar la técnica de [iurl=90&all=0&fs=978#988]double-buffering software[/iurl] para obtimizar su pintado.
¿Cuándo se dibuja un componente?
Lo más importante es entender cuándo y por qué se ejecutan los métodos paint(AWT) y paintComponant(SWING). La primera causa es una petición explÃcita mediante el método repaint(). La segunda causa es una petición del sistema, ya sea debido a un redimensionado, o por ser ocultado por otra ventana del sistema.
Regla que tenemos que respetar:
Cualquier programador que redefina el método paint(AWT) o paintComponent(Swing) se ve obligado a redibujar la totalidad de la superficie del componente. En realidad, el objeto Graphics transmitido al componente debuja siempre en el mismo espacio de memoria el cual nunca se limpiará (por razones de rendimiento). Por lo tanto, el programador del componente tiene que encargarse de limpiar el espacion y de redibujar el componente. Si el componente es complejo y su dibujado es largo, es recomendable usar la técnica de [iurl=90&all=0&fs=978#988]double-buffering software[/iurl] para obtimizar su pintado.