Paint(Graphics g)

Saudacoes a todos…

Sou iniciante em java e graças ao auxilio deste forum tenho conseguido evoluir no desenvolvimento de uma aplicacao basica.

O problema é que cheguei em um ponto onde nao consigo descobrir a solucao para o problema. Aí vai:

Um JFrame é carregado, dentro dele é colocado um JPanel com um JLabel que contem uma figura. Utilizando o metodo paint(Graphics g) eu fiz com que um circulo fosse desenhado sobre a figura a cada duplo clique do mouse. Minha intencao é ligar dois pontos com uma linha reta. Tentei utilizar o drawLine(x1,y1,x2,y2) mas encontrei uma dificuldade. Seguindo um exemplo de um livro, criei um metodo para tratar os cliques do mouse e depois de tratados, chamo o metodo repaint(). Segundo a API, o metodo possui dois construtores, onde o primeiro redesenha a tela inteira e o segundo redesenha somente uma parte, fornecendo a coordenada x, y e largura e altura. Da maneira que eu implementei, nao possuo a largura e altura que precisarei. Pensei em implementar uma rotina que cuide disso, mas encontrei outro problema. E quando as linhas se cruzarem? a segunda vai apagar a area da primeira? Segundo meus testes, sim.
Resumindo…nao sei se utilizei a abordagem correta para resolver meu problema, por isso solicito a ajuda e orientacao do pessoal do forum.

Desde ja meu muito obrigado…

Forte abraço.

de uma olhada neste tutorial para voce enteder melhor como a AWT renderiza os graficos em tela…

http://java.sun.com/docs/books/tutorial/information/download.html#OLDui

[]'s

Muito obrigado Oziel…

Vou dar uma olhada.

Forte Abraço.

Execute este codigo e clique no painel da janela para ver como funciona.As vezes te ajude.Neste caso usei um painel nao sei se com label ira proceder da mesma forma e se realmente isso q deseja, mas de toda modo tah ai!!!
import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.util.
;
class PanelQuad extends JPanel implements MouseListener
{
private Vector vetPonto;
private int tam; //vai receber o numero de circulos q quer
public PanelQuad()
{
setBackground(Color.white);
addMouseListener(this);
vetPonto = new Vector();
tam=5; // 5 apenas para vc testar
}
public void mouseClicked(MouseEvent e)
{
vetPonto.add(e.getPoint());
repaint();
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void paint(Graphics g)
{
super.paint(g);
if(vetPonto.size()>0)
{

        tam--;
        if(tam > 0)
        {
           for (int i = 0; i < vetPonto.size(); i++)
           {
              Point ptX  = (Point)vetPonto.get(i);
              g.setColor(Color.black);
              g.fillOval((int)ptX.getX(),(int)ptX.getY(), 15,15);
              g.setColor(Color.white);
              g.drawString(""+ i,(int)ptX.getX() + (15/2 - 5), 
                     (int)ptX.getY() + (15/2 + 5));
            }
        }
        else
        {
            for(int i=0;i<vetPonto.size();i++)
            {
                Point ptX = (Point)vetPonto.get(i);
                for(int j=0;j<vetPonto.size();j++)
                {
                   
                   Point ptY = (Point)vetPonto.get(j);
                   g.setColor(Color.blue);
                   g.drawLine((int)ptX.getX() + (15/2), 
                              (int)ptX.getY() + (15/2),
                              (int)ptY.getX() + (15/2), 
                              (int)ptY.getY() + (15/2));
                }
            }
            for (int i = 0; i < vetPonto.size(); i++)
            {
                Point ptX  = (Point)vetPonto.get(i);
                g.setColor(Color.black);
                g.fillOval((int)ptX.getX(),(int)ptX.getY(), 15,15);
                g.setColor(Color.white);
                g.drawString(""+ i,(int)ptX.getX() + (15/2 - 5), 
                     (int)ptX.getY() + (15/2 + 5));
            }
        }
    }
}

}
public class Teste extends JFrame
{
private PanelQuad panel;
public Teste()
{
super(“Evento teste”);
setSize(400,300);
setLocation(100,100);
setBackground(Color.white);
getContentPane().add(new PanelQuad(),BorderLayout.CENTER);
show();
}
public static void main()
{
new Teste();
}

}

Quando vc for postar codigo, tenha do dos nossos pobres olhinhos e coloque-o entre as tags [ code] e [ /code], assim ele nao vira uma macarronada pos-modernista :wink:

[quote=Carlos Martins]cv soh nao entende isso quem nao quer.E esse coisa de ficar tirando os outros eh natural de sua pessoa ou eh imprensao minha.Nao eh a primaira vez q vejo postagem suas tirando a galera.Cara vc tem agir mais e falar menos

Um abraço[/quote]

cv, agindo mais e falando menos.

cv acho q vc esta no lugar errado deveria estar em um circo