Não mostrando os retagulos e eclipses [RESOLVIDO]

6 respostas
0xFFFFFFF

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

6 Respostas

InicianteJavaHenriqu

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();
0xFFFFFFF

poderia me falar porque dessas mudanças?

@edit

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

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.

InicianteJavaHenriqu

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:

0xFFFFFFF

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.

Perfeito, erra isso mesmo passou por despercebido aqui.

Obrigado;

@InicianteJavaHenrique

Obrigado;

InicianteJavaHenriqu

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

:thumbup:

Criado 21 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 6
Participantes 3