Metodos

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

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) {}

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

obrigado

fernando :slight_smile:

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 );
		}
	}
}

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

[quote=“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 );
		}
	}
}[/quote]

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:

[code]
public void quadrado( Graphics g )
{
super.paint( g );

	for( int linha = 1; linha <= lado; linha = linha + 5 )
	{
		for( int coluna = 1; coluna <= lado; coluna = coluna +5 )
		{
			g.drawString( "*", linha , coluna  );
		}
      }
}[/code]

Eu vi a mesma coisa que ele…

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

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);
}

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(Graphics g) {
     paintSquare(g);
}

// escrever nomes de métodos e variáveis em inglês é coisa minha, dê
// o nome que quiser... mas eu prefiro usar verbos ao nomear métodos,
// como pintarQuadrado() em vez de quadrado(). 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(Graphics g) {
     // pinte o quadrado aqui
}

Sem mais,

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

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