20.01.2015 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!