Metodos

11 respostas
F

tenho que fazer um exercicio para desenhar um quadrado de asteriscos de lado digitado pelo usuario.
dai o problema pede para eu criar um metodo para desenhar o quadrado. o problema eh o seguinte:

o metodo que eu criar deve ser chamado a partir do metodo paint
do applet e deve receber o objeto Graphics de paint.

nao sei como chamar esse metodo a partir de paint. :frowning:

aguardo respostas

:?:

valeu
fernando

11 Respostas

M

se o metodo q vc fizer for ser chamado pelo paint, vc tem q redefinir o paint(), colocando a chamada la dentro
algo do tipo:

public void paint() { seuMetodo(this.getGraphics()); }

public void seuMetodo(Graphics g) {}

F

ah. ainda sou iniciante e nao sabia dessa redefinição. mas vou tentar usá-la.

obrigado

fernando :slight_smile:

F

ai. coloquei o codigo assim e não desenhou nada. nao consegui encontrar o erro.

public void paint() 
{		
	quadrado( this.getGraphics() );
}

public void quadrado( Graphics g )	
{
	super.paint( g );
	
	for( int linha = 1; linha <= lado; linha++ )
	{
		for( int coluna = 1; coluna <= lado; coluna++ )
		{
			g.drawString( "*", linha * 5, coluna * 5 );
		}
	}
}
C

Oi fernandoo,

Quando você for postar as suas dúvidas, no caso se for código, abaixo do código poste o erro que apareceu também ok? Isso as vezes ajuda a solucionar melhor e mais rápido o problema!

[]'s

J
"fernandoo":
ai. coloquei o codigo assim e não desenhou nada. nao consegui encontrar o erro. public void paint() { quadrado( this.getGraphics() ); } public void quadrado( Graphics g ) { super.paint( g ); for( int linha = 1; linha <= lado; linha++ ) { for( int coluna = 1; coluna <= lado; coluna++ ) { g.drawString( "*", linha * 5, coluna * 5 ); } } }
ae.. bom..voce pode tentar chamar o super.paint antes do metodo quadrado mas eu acho que ai tem um erro de logica tenta fazer assim seu metodo quadrado:
public void quadrado&#40; Graphics g &#41;	
	&#123;
		super.paint&#40; g &#41;;
		
		for&#40; int linha = 1; linha &lt;= lado; linha = linha + 5 &#41;
		&#123;
			for&#40; int coluna = 1; coluna &lt;= lado; coluna = coluna +5 &#41;
			&#123;
				g.drawString&#40; &quot;*&quot;, linha , coluna  &#41;;
			&#125;
	      &#125;
	&#125;
G

Eu vi a mesma coisa que ele…

F

ae Reifel. nao postei o erro pois durante a compilacao nao apareceu erro. o problema é que o codigo nao desenhou o quadrado.

M
o método paint nao recebe também um parametro do tipo Graphics??

(to meio enferrujado na parte de applets)

tente escrever o metodo paint assim:

public void paint(Graphics g)

{

quadrado(g);

}
H

O erro no código postado é justamente o quê mmpaulo falou: O método chamado pelo sistema para pintar é paint(Graphics g), e não o paint() no código postado. Use o código abaixo que deve funcionar:

public void paint&#40;Graphics g&#41; &#123;
     paintSquare&#40;g&#41;;
&#125;

// escrever nomes de métodos e variáveis em inglês é coisa minha, 
// o nome que quiser... mas eu prefiro usar verbos ao nomear métodos,
// como pintarQuadrado&#40;&#41; em vez de quadrado&#40;&#41;. Passa mais a idéia que 
// uma ação será executada. Mas o código é seu, no final das contas, se 
// você entender é o que vale.
private void paintSquare&#40;Graphics g&#41; &#123;
     // pinte o quadrado aqui
&#125;

Sem mais,

G

verdade, é tão normal o cabeçalho q eu nem observei com atenção;;;

F

realmente o mmpaulo estava certo. no bloco do metodo paint chamei o objeto Graphics ( public void paint( Graphics g ) ) e para chamar o metodo para pintar o quadrado fiz ele herdar o objeto chamada.

ficou assim

public void paint( Graphics g )

{

quadrado( g );

}

ae galera valeuz mesmo pela forca

Criado 11 de outubro de 2004
Ultima resposta 13 de out. de 2004
Respostas 11
Participantes 7