Problemas com paintComponent

1 resposta
D

Precisa desenhar as bolinhas e as arestas, porém, ele desenha as bolinhas normal, só não desenha as arestas.

Elas são guardadas em um array.
Se colocar pra desenhar a linha fora do for, desenha normal...

public void paintComponent(Graphics g) {
        
        super.paintComponent(g);
        
        g.setColor(Color.GREEN);
        for (int i = 0; i < quantPontos; i++) {
            g.setColor(Color.GREEN);
            g.fillOval(pontos[i].x, pontos[i].y,25, 25);
            g.setColor(Color.BLACK);
            g.drawString(pontos[i].getNome(), pontos[i].x+10, pontos[i].y+15);
    }
        for (int i=0;i<numArestas;i++){
       g.drawLine((int)arestas.get(i).p1.x+10, (int)arestas.get(i).p1.y+10, (int)arestas.get(i).p2.x+10, (int)arestas.get(i).p2.y+10);
}
}

Alguém me ajude por favor!

1 Resposta

ViniGodoy

Oi..

Você não deve alterar o estado do Graphics recebido como parâmetro. Mude seu método para:

public void paintComponent(Graphics g) {
   super.paintComponent(g);

   //Tiramos uma cópia do Graphics 
   Graphics2D g2d = (Graphics2D)g.create();     

   //Desenhamos com a cópia
   g2d.setColor(Color.GREEN);
   for (int i = 0; i &lt; quantPontos; i++) {
      g2d.setColor(Color.GREEN);
      g2d.fillOval(pontos[i].x, pontos[i].y,25, 25);
      g2d.setColor(Color.BLACK);
      g2d.drawString(pontos[i].getNome(), pontos[i].x+10, pontos[i].y+15);
   }

   for (int i=0;i&lt;numArestas;i++){
      g2d.drawLine((int)arestas.get(i).p1.x+10, (int)arestas.get(i).p1.y+10, (int)arestas.get(i).p2.x+10, (int)arestas.get(i).p2.y+10);
   }

   //Liberamos a cópia
   g2d.dispose();
}

Além disso, você tem certeza que p1 e p2 estão se referindo a pontos diferentes? Só olhando o seu código não dá para dizer.

Para deixar o seu código mais limpo, pense também em usar o for...each no lugar desse for comum.>

Criado 6 de julho de 2008
Ultima resposta 6 de jul. de 2008
Respostas 1
Participantes 2