A minha duvida é sobre o funcionamento do metodo
repaint( int x, int y, int width, int height )
Veja este codigo
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class RepaintTeste extends JFrame{
public RepaintTeste(){
addKeyListener( new KeyAdapter(){
public void keyReleased( KeyEvent e ){
mostrar();
}
}
);
setSize( 500, 300 );
setVisible( true );
setDefaultCloseOperation( EXIT_ON_CLOSE );
}
// seta dois pontos diferentes para rtepintar e nao a tela toda
public void mostrar(){
// manda repintar a area do retangulo retangulo 1
repaint( 50, 50, 20, 30 );
// manda repintar a area do retangulo retangulo 3
repaint( 200, 50, 20, 20 );
}
public void paint( Graphics g ){
super.paint( g );
// simula um plano de fundo
g.setColor( randomColor() );
g.fillRect( 0, 0, getWidth(), getHeight() );
// seria o retangulo 1
g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 50, 50, 20, 30 );
// seria o retangulo 2
g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 120, 50, 20, 30 );
// seria o retangulo 3
g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 200, 50, 20, 20 );
// seria o retangulo 4
g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 300, 50, 20, 20 );
}
// gera uma cor aleatoria
private Color randomColor(){
return new Color(
(int)(Math.random()*256),
(int)(Math.random()*256),
(int)(Math.random()*256)
);
}
public static void main( String g[] ){
new RepaintTeste();
}
}
qdo eu chamo o metodo mostrar, ele deveria repintar apenas os ptos
( 50, 50, 20, 30 );
( 200, 50, 20, 20 );
q econtram extamente as bolas 1 e 3 q estao dentro do metodo repaint…
cada vez que uma das 4 bolas é repintada, ela muda dse cor, então a duvida é a seguinte:
se eu pedi para o java repintar o pto
( 50, 50, 20, 30 );
( 200, 50, 20, 20 );
pq é que ele repinta o pto
( 50, 50, 170, 30 )
e com isso repinta a bola da posicao
( 120, 50, 20, 30 ); trocando sua cor, coisa que nao era
Bom… para entender melhor a minha duvida, sugiro que alguem tente rodar o programa e ver os resultados…
Obs: quero agradecer a todos que estão tentando me ajudar, e podem ter certeza que resolver esse problema é muito importante pra mim… pois faz parte de um trabalho que eu preciso entragar… Obrigado