Repaint em um local especifico da tela

qdo eu utilizo o comando

repaint( 5, 5, 50, 50 );

o java repinta somente esse quadrado…

qdo eu quero pintar dois ptos diferentes, eu tentei colocar assim:

repaint( 5, 5, 50, 50 );
repaint( 400, 5, 50, 50 );

mas na hora de repintar a tela, o java une os dois retangulos… como se estivesse usando o met union() de classe Rectangle… e na verdade repinta um unico retangulo… como se eu tivesse solicitado que ele fizesse assim:

repaint( 5, 5, 450, 50 );

consequentemente acaba repintando alguns ptos da tela que nao deveria…

alguem sabe como faz para fazer o java repintar dois ptos sem unilos automaticamente… apenas repintar os ptos que eu mandei???

Vc quer os 2 retângulos sejam independentes né?

O método de pintar é esse né?
public void paint(Graphics g)
{
}
Vc pode colocar um retângulo como sendo pintado pelo “g”, ex: g.drawRect…
e outro sendo pintado por outro objeto Graphics.
Ex:
Graphics g1=Graphics g;
g1.drawRect…

Mas tente fazer na ordem contrária ao que te expliquei, primeiro com o exemplo de baixo e depois com o de cima.Se não der certo vc pode criar outro método, mas tem jeito de fazê-los independentes, qualquer coisa é só me responder,

falo amigo,

Raphael.

oi… Raphael

Nao funcionaou…

Pricipalmente porque o compilador informou que a sintaxe

Graphics g1=Graphics g;

ela nao existe

mas tentei tudo que vc disse e tb nao consegui, pq mesmo que crie outro metodo… mas como eu mandar repintar em pto especifico… isso é proprio do paint, que é um metodo especial em java

mas mesmo assim valeu… Obrigado por me ajudar

Não seria algo assim:

Graphics g1;

SSousuke,

Fiz um código e queria que vc olhasse pra ver se é isso que gostaria?

import javax.swing.;
import java.awt.
;

public class Ret extends JFrame
{

public void mostra()
{
this.getContentPane().setLayout(null);
this.setSize(550, 310);
this.repaint();
this.setVisible(true);
}
public void paint(Graphics g) //render=fazer,tornar
{

 g.draw3DRect(40 , 40, 80, 40, true);

 g.draw3DRect(120 , 90, 80, 40, true);

}

public static void main(String args[])
{
Ret a=new Ret();
a.mostra();
}
}

Qualquer dúvida é só falar…

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

Aí segue o código alterado:

/* ACHO QUE O PROBLEMA É QUE O MÉTODO PAINT SEMPRE É EXECUTADO POR INTEIRO QUANDO VC CHAMA O REPAINT, INDEPENDENTE DE COLOCAR AS COORDENADAS OU NAUM, ACHO QUE O FUNCIONAMENTO DELE É ASSIM.
ISSO FOI O QUE CONSEGUI FAZER(NÃO SEI SE CORRESPONDE AO QUE QUER), MAS SE VC QUISER PODE DAR UMA OLHADA NOS EXEMPLOS DO SITE DA SUN OU NOS PRÓPRIOS EXEMPLOS QUE VÊEM COM O JAVA, DE REPENTE VC ACHE ALGO PARECIDO COM O QUE QUER FAZER.*/

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class RepaintTeste extends JFrame{

private Color Cor1,Cor2;
public RepaintTeste(){

Cor1=randomColor();Cor2=randomColor();
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

// manda repintar a area do retangulo retangulo 3
repaint();

}
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 2
g.setColor( Cor1 );
g.fillOval( 120, 50, 20, 30 );

// seria o retangulo 4 

g.setColor( Cor2 );
g.fillOval( 300, 50, 20, 20 );

g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 50, 50, 20, 30 );

g.setColor( randomColor() );
g.setColor( randomColor() );
g.fillOval( 200, 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();
}

}

E ae mano, bigwaves…

Valeu pela tentativa… mas não é isso nao

Falow… E obrigado

Falo , qualquer coisa to aí.