Não mostrando os retagulos e eclipses [RESOLVIDO]

Ola é pessoal, gostaria de saber porque não esta mostrando as linhas no JFrame;

vou postar o código para que vocês possam analisar;

Shaps:

[code]import java.awt.Graphics;
import javax.swing.JPanel;

public class Shapes extends JPanel
{
// escolha do usuário qual forma desenhar
private int choice;

public Shapes( int userChoice )
{
	choice = userChoice;
} // fim do construtor

// desenha uma cascata de formas que iniciam do canto superior esquerdo
public void paintComponet( Graphics g)
{
	super.paintComponent(g);
	
	for(int i = 0; i < 10; i++)
	{
		switch( choice )
		{
			case 1: // desenha retagulos
				g.drawRect(10 + i * 10, 10 + i * 10,
				50 + i * 10, 50 + i * 10);
				break;
			case 2: // desenha eclipses
				g.drawOval(10 + i * 10, 10 + i * 10,
				50 + i * 10, 50 + i * 10);
				break;
				
		}
		
	}
}

}
[/code]

Principal:

[code]import javax.swing.JOptionPane;
import javax.swing.JFrame;

public class Principal
{
public static void main(String[] args)
{
String input = JOptionPane.showInputDialog(“Enter 1 to draw rectangles\n” +
“Enter 2 to draw ovals”);

	int choice = Integer.parseInt( input );
	
	Shapes panel = new Shapes(choice);
	
	JFrame application = new JFrame("Decoderz Software On Demand");
	
	application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	application.add(panel);
	application.setSize(300, 300);
	application.setVisible(true);
	
}

}[/code]

Bom algumas coisas que influenciam:

use:

@override
public void paintComponet(Graphics g) {
      Graphics g2d = (Graphics) g.create();

g.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);

g2d.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);

e no final do método coloque:

g2d.dispose();
g.dispose();

poderia me falar porque dessas mudanças?

@edit

Observação: Ainda não esta exibindo o circulo no frame.

0xFFFFFFF
Seu primeiro código só tem 1 erro, na seguinte linha:

public void paintComponet( Graphics g)

note que falta 1 letra “n”

public void paintComponent( Graphics g)

Fiz a alteração aqui e funcionou. Claro, vale a pena considerar as observações do InicianteJavaHenrique, como usar Java2D, que tem bem mais recursos.

Abraços.

Estava sem IDE e não tinha observado, como o TerraSkilll falou só faltava o n

@override
protected void paintComponent(Graphics g) {

Você está sobrescrevendo um método já existente da classe JPanel (que você está herdando).
:arrow: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Override.html

@override
protected void paintComponent(Graphics g) {
      Graphics g2d = (Graphics) g.create();

Faz uma cópia do contexto gráfico para não afetar as demais pinturas.
:arrow: http://pontov.com.br/site/java/48-java2d/93-uma-visao-rapida-sobre-o-java-2d

g2d.dispose();
g.dispose();

Descarta a cópia do contexto gráfico.

:thumbup:

[quote=TerraSkilll]0xFFFFFFF
Seu primeiro código só tem 1 erro, na seguinte linha:

public void paintComponet( Graphics g)

note que falta 1 letra “n”

public void paintComponent( Graphics g)

Fiz a alteração aqui e funcionou. Claro, vale a pena considerar as observações do InicianteJavaHenrique, como usar Java2D, que tem bem mais recursos.

Abraços.[/quote]

Perfeito, erra isso mesmo passou por despercebido aqui.

Obrigado;

@InicianteJavaHenrique

Obrigado;

De nada :smiley: só falta agora vc colocar [RESOLVIDO] no título.

:thumbup: