computação gráfica

Ai galera esto fazendo um trabalho de computação gráfica e ja estou conseguindo desenhar as figuras em um JFrame. O problema é quando eu maximizo a tela ela perde o desenho e fica em branco de novo.
Será que alguem pode me dar um Help!!

opa beleza?

cara como que está o teu código você implementou
o método para atualizar o componente?
:roll:

qualquer coisa poste o teu código ai para o pessoal
tentar ajudar :grin:

de uma olhada tambem: ShapeExample

no caso eu tenho duas classes, uma com todos meus metodos de desenhar e outra com os eventos do mouse e chamando a classe que desenha.

esta é classe que desenha.

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

class Figura extends Canvas {
	/*DEFININDO A VARIAVEL QUE DENOMINA QUAL A FIGURA A SER DESENHADA
	 1 PARA RETA
	 2 PARA ELIPSE
	 3 PARA QUADRADO
	 4 PARA POLIGONO*/
	int quemChamar;

	//DEFININDO AS VARIAVEIS PONTOS X0, X1, Y0 E Y1 
	int x0,y0,x1,y1;
	
	//DEFININDO AS VARIVRIS DE LARGURA E A ALTURA
	int altura,largura;
	
	//VARIAVEIS DO POLIGONO
	Polygon p = new Polygon();
		
	//DESENHA POLIGONO
	public void FazerPolygon(Graphics g) 
	{
		g.drawPolygon(this.p);
		this.p.reset();
	}
	
	//pega os pontos do poligono
	public void adicionaPontosPoligono(int x, int y)
	{
		this.p.addPoint(x,y);
	}
	
	//DESENHA RETA
	public void FazerReta(Graphics g, int x0, int y0, int x1, int y1)
	{
		
		g.drawLine(x0,y0,x1,y1);
	}
	
	//DESENHA ELIPSE
	public void FazerElipse(Graphics g, int x0,int y0, int largura, int altura)
	{
		g.drawOval(x0, y0, largura, altura);
    }
    
    //DESENHA QUADRADO
    public void FazerQuadrado(Graphics g, int x0, int y0, int largura, int altura)
    {
    	g.drawRect(x0, y0, largura, altura);
    }
    
    //PROGRAMA QUE RODA ADICIONA A CLASSE NO FRAME
    public void paint (Graphics g)
	{
			
	    switch(this.quemChamar)
	    {
	     
	     case 1:  //fazendo uma reta
		 this.FazerReta(g,this.x0,this.y0,this.x1,this.y1);	
		 break;
		 
		 case 2:  //fazendo uma elipse
		 this.FazerElipse(g,this.x0,this.y0,this.largura,this.altura);
		 break;
		 
		 case 3:	//fazendo quadrado
		 this.FazerQuadrado(g,this.x0,this.y0,this.largura,this.altura);
		 break;
		 
		 case 4:
		 this.FazerPolygon(g);
		}
		
		
	}
}

e esta é classe que tem o evento do mouse e chama a classe que desenha no caso eu estou passando um só como um exemplo para ele desenhar apenas uma reta.

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

public class Teste extends JFrame implements MouseListener
{
	
	Figura figura = new Figura();
	int tipoFigura ;
	Teste()
	{
		//defini a figura que vai ser desenhada
		figura.quemChamar = 1;
		tipoFigura = figura.quemChamar;
		
		// registra os listeners no frame
		
 	    addMouseListener(this);
	}
	public void mousePressed(MouseEvent e) {     
	    this.figura.x0 = e.getX();
    	    this.figura.y0 = e.getY();    	 		 		 		 
	}

 public void mouseReleased(MouseEvent e) 
 { 
  
      Graphics g = getGraphics();  
          
	     this.figura.x1 = e.getX();
   		 this.figura.y1 = e.getY();
   		 this.figura.paint(g);
  
 }
 public void mouseClicked(MouseEvent e) 
 { 
 	
 }
 public void mouseEntered(MouseEvent e) 
 { 
 	//System.out.println("Mouse Entered!"+e.getX()+", "+e.getY()); 
 }
 public void mouseExited(MouseEvent e) 
 { 
   /*Graphics g = getGraphics();
   System.out.println("Mouse Exited!"+e.getX()+", "+e.getY()); 
   this.figura.paint(g);*/
   
 }
 
 public void mouseDragged(MouseEvent e) 
 { 
 	//System.out.println("Mouse Dragged! "+e.getX()+", "+e.getY()); 
 }
 public void mouseMoved(MouseEvent e) 
 { 
 	//System.out.println("Mouse Moved to "+e.getX()+", "+e.getY()); 
 }
 public static void main(String[] a) 
 {
 	new Teste().show();
 }
}

Mas o problema é que quando eu maximizo a tela ou mimizo a tela a reta que eu tinha desenhado some.
Se puder me ajudar eu agradeço!!!
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - AnjoSupremo[/color][/size] :joia:

bom o problema em seu codigo é o seguinte
você desenha no componente até ai tudo certo, não?

beleza, o seu método de atualização tambem está correto…
( acho que falta implementar o método paintComponent( Graphics g ) )

bom fora isso, segundo o funcionamento da atualização assim que ele
invocar novamente o método de atualização da tela, o qual tambem é feito
nos eventos de janela, como minimizar, maximizar, senão me engano no
mover da janela tambem…

como você apenas mandou desenhar, porem não armazenou
as informações das retras desenhas, quando ele for atualizar
novamente ele não irá redesenhar as retas anteriores
por isso que elas somem… :roll:

ps.: no kit de desenvolvimento java instalado na máquina,
junto dele vem um conjunto de exemplos… no caso tambem
possui um exemplo de manipulação de imagens e gráficos Java 2D

procure na sua máquina ${endereço do jdk}\demo\jfc\Java2D
neste exemplo possui codigos de exemplo de uso do Java 2D

na revista: Java Magazine 13ª Edição - possui um codigo de exemplo
Pinte o 7 com o Java 2d

na revista: Java Magazine 15ª Edição - possui um codigo de exemplo
Pinte o 7 com o Java 2d - Parte 2

na revista: Java Magazine 17ª Edição - possui um codigo de exemplo
Pinte o 7 com o Java 2d - Parte 3

abraços

Com base nas suas informações eu implementei o método paint, e cheguei a conclução que a cada vez que se mexe na tela e dispara o método paint e se a pessoa implementar ele, a classe vai fazer aquilo que estiver no método paint.
Bom eu fiz uma classe de desenhar Poligonos está no código abaixo se alguem precisar é só pegar.

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import java.awt.Frame;
 import java.util.*;
 
 class Poligono extends JFrame implements MouseListener,KeyListener 
 {
 	
 	ArrayList list = new ArrayList(); 
 	ArrayList vx = new ArrayList(); 
 	ArrayList vy = new ArrayList(); 
 	int i;
 	int ax[];
 	int ay[];
 	Polygon p1;
 	
 	int x,y;
 	public Poligono()
 	{
 	

 		addMouseListener(this); 
 		addKeyListener(this);
 	    setSize(1028,768);
  	    setLocation(0,0);
  	    System.out.println("executando o construtor!"); 
  	    
  	    String msg = new String("PARA DESENHAR POLIGONOS, CLICK NOS PONTOS DA TELA, DEPOIS TECLE ENTER");
  	    JOptionPane.showMessageDialog(null,msg); 
  	    
  	      
 	}
 	
 	public void paint(Graphics g) 
 	{
     super.paint(g);
    Graphics2D g2 = (Graphics2D) g;

        ax = new int[vx.size()];        
        ay = new int[vy.size()];

        for ( int count = 0; count < vx.size(); count++ )
        {        	
        	ax[count] = ( ( Integer) vx.get( count )).intValue() ;        	
        	ay[count] = ( (Integer) vy.get( count ) ).intValue();        	     
        }

       p1 = new Polygon(ax, ay, i) ;
       
       //zerando as variaveis
       i=0;
       vx.clear();
       vy.clear();
               
        list.add(p1);
                
        for ( int count = 0; count < list.size(); count++ )
        {         
         	if(list.get(count) instanceof Polygon)
         	{         	
         		g2.drawPolygon( (Polygon)list.get( count ) );
                	System.out.println("um poligono  " + count);             
         	}         	
         }
    }
    public void adicionaPontosPoligono(int x, int y)
	{
		vx.add(new Integer(x));
		vy.add(new Integer(y));
		i++;		
	}	
	//evento do mouse
	public void mousePressed(MouseEvent e) 
	{
		this.adicionaPontosPoligono(e.getX(), e.getY());
 	  
    } 

 public void mouseReleased(MouseEvent e) 
 { 
 } 
 public void mouseClicked(MouseEvent e) 
 { 
 } 
 public void mouseEntered(MouseEvent e) 
 {  
 } 
 public void mouseExited(MouseEvent e) 
 { 
 } 
 public void mouseDragged(MouseEvent e) 
 { 
    //System.out.println("Mouse Dragged! "+e.getX()+", "+e.getY()); 
 } 
 public void mouseMoved(MouseEvent e) 
 { 
    //System.out.println("Mouse Moved to "+e.getX()+", "+e.getY()); 
 } 
 //eventos do teclado
 public void keyPressed(KeyEvent evt)
   {     	
   }     
   public void keyTyped(KeyEvent arg0) 
   {
		Graphics g = getGraphics();   	
   		  
   	        this.paint(g);
		System.out.println("chamando o paint!");    		
   } 
   public void keyReleased(KeyEvent arg0) { 
   //System.out.println("o numero bbbbbbbbbbb"); 
       
   } 
   public static void main(String[] a) 
 { 	    
	Poligono m = new Poligono();
 	m.show();
 }
 	
 }

Preciso implementar uma palheta de cores em RGB e HSL.
Se alguem tiver algum puder ajudar, eu agradecerei!!!
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - AnjoSupremo[/color][/size] :joia: