CAPITULO 12: DIBUJADO Los mecanismos de pintado de Java ...
CAPITULO 12: DIBUJADO Los mecanismos de pintado de Java ...
CAPITULO 12: DIBUJADO Los mecanismos de pintado de Java ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Después <strong>de</strong> <strong>de</strong> iconificar<br />
Poco antes que el método init termine (sólo para applets)<br />
Cuando un navegador regresa a una página previamente mostrada.<br />
Cuando el hilo GUI llama al método paint() , es necesario suministrar un contexto<br />
gráfico, el parámetro<br />
<strong>de</strong>l método paint () es una instancia <strong>de</strong> la clase Graphics.<br />
Método repaint()<br />
Hay ocasiones cuando el programa, no el ambiente , <strong>de</strong>be iniciar el <strong>pintado</strong>. Esto<br />
usualmente suce<strong>de</strong> en<br />
respuesta a eventos <strong>de</strong> entrada.<br />
Suponga que usted que necesita dibujar un punto rojo en la ultima posición don<strong>de</strong> se<br />
hizo click con el<br />
ratón. El applet <strong>de</strong>be ser amarillo.<br />
Asuma que el applet maneja sus propios eventos <strong>de</strong> ratón. Su manejador <strong>de</strong> eventos se<br />
vería <strong>de</strong> la<br />
siguiente manera:<br />
1. public void mouseClicked( MouseEvent e ) {<br />
2. Graphics g = getGraphics();<br />
3. g.setColor( Color.yellow );<br />
4. g.fillRect( 0, 0, getSize().width, getSize().height );<br />
5. g.setColor( Color.red ); // red dot<br />
6. g.fillOval( e.getX()-10, e.getY()-10, 20, 20 );<br />
7. }<br />
Existen dos razones por las cuales esta aproximación esta lejos <strong>de</strong> ser optima.<br />
Primero, siempre que el applet se cubre y se muestra, el hilo GUI llama al método paint<br />
().<br />
Desafortunadamente paint() no sabe <strong>de</strong>l círculo rojo que fue dibujado en el método<br />
mouseClicked (),<br />
por lo tanto el círculo rojo no será re<strong>pintado</strong>.<br />
Una buena práctica es realizar todas las operaciones <strong>de</strong> dibujado en el método paint () o<br />
en métodos<br />
llamados <strong>de</strong>s<strong>de</strong> el método paint(), para que el hilo GUI pueda reparar las porciones que<br />
han sido<br />
dañadas. El hilo GUI supone que el método paint() pue<strong>de</strong> reconstruir la pantalla en un<br />
<strong>de</strong>terminado<br />
momento.<br />
La forma <strong>de</strong> dar al hilo GUI lo que espera, es remover todo el código <strong>de</strong> dibujado <strong>de</strong> los<br />
manejadores<br />
<strong>de</strong> eventos. Manejadores <strong>de</strong> eventos similares a mouseClicked() pue<strong>de</strong>n almacenar<br />
información <strong>de</strong><br />
estado en variables instanciadas. El método paint () pue<strong>de</strong> usar los valores <strong>de</strong> las<br />
variables instanciadas